前言
前后端分离的开发模式中,一般由后端提供给接口给前端调用。如果接口中包含用户身份证、银行卡等敏感信息,我们必须要考虑数据安全性,因为网络传输,本身就没有安全保障。所以容不得马虎。
众所周知,Https比Http要安全,因为传输中Https会对数据进行加密,那么到底如何加密的呢?而Https比Http要慢,也是因为要进行加密过程
Https 加密简介
该过程使用RSA加密算法,和AES加密算法.
- AES(对称加密) 加密、解密过程中使用同一个密钥,效率快
- RSA(非对称加密) 加密、解密分别使用不同的密钥,此密钥是成对的,分为公钥和私钥。公钥允许泄露,私钥只能一方拥有,所以一般用公钥对数据加密,私钥对数据解密。
- Https加密详情 使用RSA的公钥对AES的密钥加密,传输给另一端,另一端使用私钥解密密文得到AES密钥,有了AES密钥了,就可以进行加密操作了。
Https 加密过程
- 客户端启动,发送请求到服务端,服务端用RSA算法生成一对公钥和私钥,我们简称为pubkey1,prikey1,将公钥pubkey1返回给客户端。
- 客户端拿到服务端返回的公钥pubkey1后,自己用RSA算法生成一对公钥和私钥,我们简称为pubkey2,prikey2,并将公钥pubkey2通过公钥pubkey1加密,加密之后传输给服务端。
- 此时服务端收到客户端传输的密文,用私钥prikey1进行解密,因为数据是用公钥pubkey1加密的,通过解密就可以得到客户端生成的公钥pubkey2。
- 然后自己在生成对称加密,也就是我们的AES的密钥,生成了这个key之后我们就用公钥pubkey2进行加密,返回给客户端。
- 客户端收到密文后,使用pubkey2对应的私钥prikey2,对密文解密得到AES的密钥。
- 最后就用加密key进行数据传输的加密,至此整个流程结束。