个人搭建的博客,欢迎访问:
https://www.pphtc.com/work.html
iOS端demo,对加密、解密、验签进行了封装:
https://github.com/1552612373/YCSecurity
数据传输安全解决方案:加密解密和验签
公钥加密,私钥解密。私钥签名,公钥验签。
非对称加密(比如RSA):
简单解释:加密解密用的是不同的密钥,实际上是一对密钥,即公钥、私钥。
特点:加密解密速度较慢,但更加安全。
对称加密(比如AES):
简单解释:加密解密用的是同一密钥。
特点:加密解密速度快。
常用思路:
加密
- 用AES(对称加密)报文,因为报文可能很大,对称加密速度快。
- 然后用RSA私钥 对AES的密钥进行加密。此步骤,对方解密的数据其实是AES等密钥,大小有限,所以对速度要求不大。
- 再对密文加上验证签名比如hmac,为的目的是进一步验证身份。(hmac的密钥也用aes加密后传输)
- 对以上数据等拼起来进行传输。
解密
- 接收方先通过RSA公钥解出AES的密钥 和 hmac的密钥。
- 然后再用AES的密钥解密得到明文
- 对密文用hmac的key进行签名,进行对比,一致则验签通过,身份合法。
无论是服务端或是客户端,都可以用此方式进行加密解密。
双方协商后只需要有两对RSA公钥私钥,分别用来加密解密。
注意:私钥绝不能外泄!
网友评论