個(gè)人搭建的博客篙悯,歡迎訪問:
https://www.pphtc.com/work.html
iOS端demo蚁阳,對加密、解密鸽照、驗(yàn)簽進(jìn)行了封裝:
https://github.com/1552612373/YCSecurity
數(shù)據(jù)傳輸安全解決方案:加密解密和驗(yàn)簽
公鑰加密螺捐,私鑰解密。私鑰簽名,公鑰驗(yàn)簽定血。
非對稱加密(比如RSA):
簡單解釋:加密解密用的是不同的密鑰赔癌,實(shí)際上是一對密鑰,即公鑰澜沟、私鑰届榄。
特點(diǎn):加密解密速度較慢,但更加安全倔喂。
對稱加密(比如AES):
簡單解釋:加密解密用的是同一密鑰。
特點(diǎn):加密解密速度快靖苇。
常用思路:
加密
- 用AES(對稱加密)報(bào)文席噩,因?yàn)閳?bào)文可能很大,對稱加密速度快贤壁。
- 然后用RSA私鑰 對AES的密鑰進(jìn)行加密悼枢。此步驟,對方解密的數(shù)據(jù)其實(shí)是AES等密鑰脾拆,大小有限馒索,所以對速度要求不大。
- 再對密文加上驗(yàn)證簽名比如hmac名船,為的目的是進(jìn)一步驗(yàn)證身份绰上。(hmac的密鑰也用aes加密后傳輸)
- 對以上數(shù)據(jù)等拼起來進(jìn)行傳輸。
解密
- 接收方先通過RSA公鑰解出AES的密鑰 和 hmac的密鑰渠驼。
- 然后再用AES的密鑰解密得到明文
- 對密文用hmac的key進(jìn)行簽名蜈块,進(jìn)行對比,一致則驗(yàn)簽通過迷扇,身份合法百揭。
無論是服務(wù)端或是客戶端,都可以用此方式進(jìn)行加密解密蜓席。
雙方協(xié)商后只需要有兩對RSA公鑰私鑰器一,分別用來加密解密。
注意:私鑰絕不能外泄厨内!