在使用一些软件或者是系统的时候,我们常常听到或者看到“公钥”,“私钥”这两个词,比如,我们在使用git的时候,常常要去先使用git生成自己的公钥和私钥,然后将公钥提交到搭建了git的云代码管理网站上去进行协作开发,那么这个公钥私钥究竟是个什么鬼?

一、对称加密解密方式

我们的数据传输对称加密是如下这个样子的:

例如,现在A方要将一段数据发送给B方:

如果不加密的话,直接用明文传输,很可能在传输的过程中被恶意的第三方拦截到,轻则是B方接收不到数据,重则恶意的第三方篡改数据,让B方接收到错误的数据,使得A、B双方蒙受损失:

于是我们要在A方进行数据加密,并且要在B方进行解密操作让B方得到数据,那么就需要加密解密的规则,这个规则被我们称为“钥匙”,如图:

但是这种加密方式会出现一个问题,就是在发送的途中,钥匙和数据一起被坏人窃取了,坏人可能破坏数据和钥匙让B方接收不到,也可能使用钥匙解密了数据,然后篡改了数据,再把钥匙原路发给B方,让B方在察觉不到的情况下接收了错误的数据。

为了解决这个问题,权宜之计是对钥匙加密,也就是用一把钥匙去解密另一把钥匙,然后再用解密出来的钥匙解密获取数据。可是坏人要是想解密依然是可以的,只不过麻烦一点,要一层一层地用钥匙解密,不过破解的难度还是不高的。针对这种问题,美国密码学家惠特菲尔德·迪菲和马丁·赫尔曼合作发明了“迪菲-赫尔曼”加密算法,此算法针对性地解决了对称加密中钥匙的安全性问题。

二、非对称加密

针对传统加密方式的弊端,我们想出了新的对策,就是非对称加密,非对称加密是一种使用不同钥匙加密解密的方法,原理是这样的:

  1. 接收方B方先创建一对钥匙,包括一个加密钥匙,一个解密钥匙,也就分别对应我们刚才说的公钥和私钥
  2. A方使用加密钥匙对数据进行加密
  3. A方将密文发送给B方
  4. B方使用自己的解密钥匙进行解密

通过这样的方式进行加密之后,坏人即使拦截了A方发送的数据,但是因为没有解密钥匙的缘故,也无法进行解密

同时,使用非对称加密还有一个好处,就是方便进行多方的数据传输———因为B方发布的加密钥匙也就是公钥只被用来加密,因此即使被很多人掌握那么对B方来说也是安全的,那么,B方就可以把同一把加密钥匙公开给多个人,然后多个人就可以一起给B方发数据,而不用为每个人分别准备一把公钥。

但是,非对称加密存在两个问题

  1. 速度慢
    非对称加密的速度比较慢,因为它采用的算法强度比较高,因此不适合用来传输少量数据,不值得为少量数据浪费性能,完全可以采用别的加密方式,或者使用混合加密方式来加密,点此查看混合加密

  2. 非对称加密是否可靠
    从前面的讲解来看,非对称加密是一种比较安全的方式,安全的地方在于没有对应的钥匙几乎不可能破解加密后的数据,但是,非对称加密的问题往往是出现在交付钥匙的过程上,我们来看下面一种情况:
    –>B方创建公钥私钥并将公钥交给A方
    –>坏人拦截了公钥,自己创建了一对公钥私钥,这里称为“坏公钥”和“坏私钥”
    –>将公钥替换为自己创建的“坏公钥”
    –>将“坏公钥”提供给了A方
    –>A方使用了坏公钥加密数据,发送回B方
    –>在发送的途中被刚才的相同坏人拦截
    –>坏人使用自己的坏私钥解密了A方使用坏私钥加密的数据
    –>坏人偷看A方发送的数据,或者干脆篡改了A发送的数据
    –>坏人使用B方的公钥加密已经被偷看或者被篡改的数据
    –>将数据发回给B方
    –>B方发现自己依然可以用自己的私钥解密,因此会认为自己的数据还是安全的,根本不知道数据已经被人窃取或篡改了
    图示如下:

这种方式称为“中间人攻击”,我们发现,这种攻击方式的问题根源是A方无法确定自己的公钥是否是B方发送的,因此,为了防范这种攻击,我们使用了数字证书,在另一篇博客会提到。

对称加密,非对称加密详解相关推荐

  1. 网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)

    网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名.数字证书) 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTT ...

  2. 加密、解密详解及CA的实现

    加密.解密详解及CA的实现 推荐 转载nmshuishui的文章,文章链接 http://blog.51cto.com/nmshuishui/1370917?utm_source=tuicool&am ...

  3. JavaScript实现加密与解密详解

    这篇文章介绍了Java脚本语言实现加密与解密详解的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 目前原生射流研究-貌似并没有提供讯息摘要5计算相 ...

  4. 隐私计算加密技术基础系列(下)对称与非对称加密的应用场景

    本章是<隐私计算加密技术基础>系列文章的最后一篇,感慨下,终于写完了,这个春节假期除了陪家人就是写着三篇文章了.其实写之前并没有觉得是多么难的事情,感觉这些原理自己都比较清楚,但是随着写的 ...

  5. ios php rsa加密解密,php rsa加密解密使用详解

    第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem 从上面看出通 ...

  6. python 录制web视频_Python django框架 web端视频加密的实例详解

    视频加密流程图: 后端获取保利威的视频播放授权token,提供接口api给前端 参考文档:http://dev.polyv.net/2019/videoproduct/v-api/v-api-play ...

  7. C#实现RSA加密和解密详解

    C#实现RSA加密和解密详解 原文:C#实现RSA加密和解密详解 RSA加密解密源码: using System; using System.Collections.Generic; using Sy ...

  8. Linux系统安全概述-sudo授权-pam认证机制-对称加密-非对称加密-md5-数字证书

    内容: 17.1 Linux系统安全概述-su-sudo授权 17.2 pam认证机制概述 17.3 对称加密-非对称加密方法 17.4 md5-sha1-哈希算法使用方法 17.5 CA证书的作用 ...

  9. Linux加密和安全篇(一)gpg、对称和非对称加密、哈希算法

    对于linux运维工作者而言,加密技术已经很早就用于数据的存储和数据之间的交换.我们可以会为了防止你的网站.服务器或者系统,我们会使用一些手段来防止一些恶意的攻击或者访问.一下就对linux的安全和加 ...

  10. HTTPS(对称加密+非对称加密+证书)

    目录 1. 加密和解密 HTTPS工作过程 2. 对称加密 3. 对称加密 4. 既然都有非对称加密了,那为啥还要有对称加密 5. 中间人攻击 6. 引入证书 HTTPS 也是一个应用层协议. 是在 ...

最新文章

  1. 基于图像的三维模型重建——稠密点云重建
  2. AAAI 2020 论文接收结果出炉,得分 997 论文被拒,388 反而中了?
  3. python 字符串去除中文
  4. 最全BAT前端开发面试80题:算法+html+js+css!含答案大赠送!
  5. python多线程文件的数据续传_python实现支持并发、断点续传的Ftp程序
  6. python命令符bash_从python结构执行远程bash命令时“转义”$
  7. 回家_洛谷U3427_dfsbfs
  8. foreach()与list()的综合应用,用list给嵌套的数组解包
  9. Prime Path素数筛与BFS动态规划
  10. 2017年最值得关注的5大产品设计趋势
  11. 估计理论(5):BLUE的定义(6.3)
  12. fastJson、Jackson对象转json串不使用驼峰方法和json转对象
  13. python基础语法学习一
  14. 首发的400G园区核心交换机,开启园区超宽时代
  15. hpgs2wnd.exe
  16. c语言猜拳游戏石头剪刀布,模拟剪刀石头布猜拳游戏
  17. 小学英语计算机问卷调查,《小学英语单词记忆方法研究》问卷调查分析报告
  18. 【Leetcode】644. Maximum Average Subarray II
  19. 利用有道翻译Api实现英文翻译功能
  20. 基于51单片机蜂鸣器的音乐播放器设计C

热门文章

  1. python中pprint模块
  2. 软件外包公司的优缺点
  3. matlab中的向量除法
  4. android 涨潮动画加载_潮汐app怎么使用?潮汐app各功能测评介绍
  5. []==[]和[]==![]
  6. Android混淆大法
  7. HTTP ---code错误状态码大全
  8. 带阻滤波器对周期性噪声消除matlab实现
  9. js几种escape()解码与unescape()编码
  10. Jquery实现textarea自动换行