個(gè)人搭建的博客,歡迎訪問:
https://www.pphtc.com/work.html
iOS端demo,對(duì)加密、解密、驗(yàn)簽進(jìn)行了封裝:
https://github.com/1552612373/YCSecurity
數(shù)據(jù)傳輸安全解決方案:加密解密和驗(yàn)簽
公鑰加密,私鑰解密。私鑰簽名,公鑰驗(yàn)簽。
非對(duì)稱加密(比如RSA):
簡(jiǎn)單解釋:加密解密用的是不同的密鑰,實(shí)際上是一對(duì)密鑰,即公鑰、私鑰。
特點(diǎn):加密解密速度較慢,但更加安全。
對(duì)稱加密(比如AES):
簡(jiǎn)單解釋:加密解密用的是同一密鑰。
特點(diǎn):加密解密速度快。
常用思路:
加密
- 用AES(對(duì)稱加密)報(bào)文,因?yàn)閳?bào)文可能很大,對(duì)稱加密速度快。
- 然后用RSA私鑰 對(duì)AES的密鑰進(jìn)行加密。此步驟,對(duì)方解密的數(shù)據(jù)其實(shí)是AES等密鑰,大小有限,所以對(duì)速度要求不大。
- 再對(duì)密文加上驗(yàn)證簽名比如hmac,為的目的是進(jìn)一步驗(yàn)證身份。(hmac的密鑰也用aes加密后傳輸)
- 對(duì)以上數(shù)據(jù)等拼起來進(jìn)行傳輸。
解密
- 接收方先通過RSA公鑰解出AES的密鑰 和 hmac的密鑰。
- 然后再用AES的密鑰解密得到明文
- 對(duì)密文用hmac的key進(jìn)行簽名,進(jìn)行對(duì)比,一致則驗(yàn)簽通過,身份合法。
無論是服務(wù)端或是客戶端,都可以用此方式進(jìn)行加密解密。
雙方協(xié)商后只需要有兩對(duì)RSA公鑰私鑰,分別用來加密解密。
注意:私鑰絕不能外泄!