留个印记,防止自己后面忘了来看下
加解密方式:
1、对称加/解密
用一个密钥来进行加密和解密
明文 + 密钥 = 密文
密文 + 密钥 = 明文
优点:加解密速度快、简单
缺点:密钥泄漏后, 被知道后就会被随便解密了
2、非对称加/解密
用两个密钥来进行加密和解密,一般是公钥和私钥,公钥给客户端,私钥保留服务器不对外提供
明文 + 公钥 = 密文
密文 + 私钥 = 明文
优点:由于外部不知道私钥, 所以无法解密传输中的数据获取明文
缺点:速度慢, 影响接口性能
3、HTTPS加密流程
同时利用了对称加解密和非对称加解密
1、建立连接:客户端首先要信任服务器给的证书,与服务器建立连接,这个证书里有公钥publicKey和签名sign,公钥publicKey是给你第一次发请求时用的,签名是确保发请求时这个证书是还有效的
2、客户端生产对称加密密钥:客户端自己先生成一个密钥clientKey,然后通过服务器证书里给的公钥进行非对称加密,再把clientKey通过请求发送给服务器,这样的话发送过程中,记即使被抓到请求了,别人也无法解密,因为公钥只能加密不能解密
3、服务器获取对称加密密钥:服务器接收到客户端发来的clientKey后,通过本地的私钥来解密就可以拿到clientKey的明文,保存本地并告诉客户端
4、数据传输:之后就简单了,由于一开始通过非对称加解密来传输了clientKey,clientKey正常情况下是不会被第三方抓包抓到的,所以这个clientKey等于只有客户端和服务器知道了,然后就有最开始提到的对称加解密,对称加解密只要密钥没暴露,就是又快又简单,所以以后客户端和服务器就全部通过clientKey来进行对称加解密传输,反正没人知道clientKey是什么,那么数据就是绝对安全的了
总结就是先通过非对称加解密来传输一个用来对称加密的密钥防止外部知道来实现安全,再利用这个密钥进行对称加密传输数据实现速度快