什么是HTTPS,公钥,私钥,对称加密,非对称加密到底是什么东西?
相信不少非科班的同学和我一样经常把这些概念搞混淆,特别是计算机网络方面的相关知识,那么今天我就来给大家介绍一下我所理解的公钥,私钥,对称加密,非对称加密,这些东西吧
- HTTP和HTTPS
众所周知,http是一种无状态的超文本传输协议,他是不安全的,所以就有了HTTPS,而HTTPS就是HTTP+加密算法(SSL,TLS),原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。
公钥: 简而言之,大家谁都可以持有
私钥: 顾名思义,只能自己持有
对称加密
什么是对称加密? 简而言之,就是发送方和接收方使用同一把密钥,发送方用该密钥将报文加密,再将报文发送给接收方,接收方再用密钥解密,这样,即使报文被窃取了也没问题,因为他没有密钥,所以看不懂报文内容,这就是加密的功能了
- 那么问题来了,接收方怎么安全的获取密钥呢?这个问题等了解非对称加密之后再解决
非对称加密
- 报文的加密和解密使用不同的密钥,用公钥加密,私钥解密
- 具体过程是 :
- 接收者生成自己的公钥和私钥,然后将公钥发送给发送者(即使公钥被窃取也无所谓)
- 发送者用得到的公钥对报文进行加密,发送给接收者(报文被窃取也无所谓,因为他没有私钥无法解密)
- 接收者用私钥解密,得到原始的报文
注意:使用一对公钥和私钥的话,持有私钥的一方只能接收报文,持有公钥的一方只能发送报文,所以只能单向通信,若是想支持安全的双向通信,需要两对公钥私钥
对称加密的问题解决
对称加密时如何安全的将密钥发送给对方?
- 线下交流(别被偷听了就行)
- 使用非对称加密传送密钥
非对称加密传送密钥具体过程就是: 假设 A和B进行交互
- A生成对称加密的密钥
- B生成非对称加密的公钥和私钥
- B将非对称加密的公钥发送给A
- A用公钥将 对称加密的密钥 进行加密发送给B
- B用私钥对 用公钥加密后的对称加密的密钥 进行解密 得到 对称加密的密钥
这里描述的可能有点拗口,其实就是把用来对称加密的密钥当做报文一样,用非对称加密的方式发送给对方
那是不是都用非对称加密不就完事了吗?其实不然,因为非对称加密也有问题,时间慢就是其中一个
HTTPS采用的加密方式。
- 在交换密钥阶段使用公开密钥(用非对称加密获取密钥)加密方式,之后建立通信交换报文阶段则使用共享密钥(对称加密)加密方式。
贴一下对比:

这里的用CA证书来解决中间人攻击问题,我就不再赘述了,大家可以上网查阅相关具体的解释
以上都是我自己的一些简单的理解,如有不正确的地方,欢迎指出,毕竟我也还是在学习阶段,另外,祝大家秋招都能找到心仪的工作~~
(八股文背起来!leetcode刷起来!)