文章目录
结合对对称加密算法和非对称加密算法以及哈希算法的了解,对前后端数据传输进行加密传输,原理不外乎, 对称加密传输Data,非对称加密对称秘钥,计算传输Data的摘要,确保数据的安全性和完整性
各种加密算法及特点
对称加密算法
特点:
加密和解密使用相同密钥
算法公开、计算量小、加密速度快、加密效率高
常见算法:
DES
3DES
AES
IDEA
Blowfish算法,RC5算法
RC2、RC4、RC5
非对称加密算法
特点:
加密和解密使用不同密钥
1、公钥公开,私钥私藏,无需双方传输密钥协商,所以安全性比对称加密算法更高
2、非对称加密的算法复杂,运算速度比对称加密解密的速度慢很多
3、一般情况下使用非对称加密保护对称加密的密钥,密钥协商后使用对称加密进行通信
4、最佳实现是双方各自保存自己的私钥,使用对方的公钥加密数据传输
常见算法:
RSA、DSA、ECC、DH
摘要算法-又叫哈希算法-又叫散列算法
特点:
任何数据加密,得到的密文长度固定。 密文是无法解密的(不可逆)
常见算法:
MD5、SHA-1、SHA-256
数据传输加解密前端传参分为三部分
前提:客户端服务端商定好对称加密算法,和非对称加密算法
1. 对称秘钥加密数据Data
客户端生成两个随机数,R1,R2
随机数R1作为对称秘钥,用对称加密算法,对称秘钥R1加密Request Data,生成密文M1
2. 生成带秘钥的哈希HMAC
用随机数R2、以及哈希算法(SHA-1),计算出带秘钥的哈希HMAC
3.公钥加密对称秘钥
公钥存放在客户端,直接拿来用。
公钥加密两个随机数,生成密文M2
服务器解密
1. 服务器解密出对称秘钥
服务器收到请求后,用服务器私钥,解密M2,计算出两个随机数R1,R2
2. 服务器解密出明文
服务器用R1解密密文M1,得到原文Request Data
3.对比HMAC
服务器拿Request Data和R2计算带秘钥的哈希,与客户端传过来的HMAC做对比,一致,则信息完整,不一致,则报错
服务器加密浏览器解密
服务器用对称秘钥R1加密response Data,发给客户端;并用R2计算带秘钥的哈希HMAC。客户端收到后,拿这次请求发送的随机数R1解密响应数据;用R2计算HMAC对比传过来的HMAC,一致则数据完整。
至此,完成一次加密通信。
每次请求都是这个过程,因为每次调接口,都是随机生成的随机数R1,R2作为对称秘钥。无论请求还是响应都需要验证数据的机密性和完整性,都需要计算摘要。