前言
前幾天在和幾個技術朋友聊天的時候聊到了關于加密解密和加簽驗簽的過程,發現自己雖然略知一二,但是對具體細節還是不怎么了解,還是需要總結一下。
1. 加密
加密是為了保證數據傳輸的安全性。
非對稱性加密:
非對稱加密算法需要兩個密鑰:公開密鑰(publickey
:簡稱公鑰)和私有密鑰(privatekey
:簡稱私鑰)。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。 非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰并將公鑰公開,需要向甲方發送信息的其他角色(乙方)使用該密鑰(甲方的公鑰)對機密信息進行加密后再發送給甲方;甲方再用自己私鑰對加密后的信息進行解密。甲方想要回復乙方時正好相反,使用乙方的公鑰對數據進行加密,同理,乙方使用自己的私鑰來進行解密。
2. 簽名
簽名是為了保證數據傳輸過程中不被篡改。
3.圖解
- 移動端:
移動端大體分為兩個數據一部分是簽名,另一部分是需要傳輸的數據。
我們對傳輸數據和本地private_key
進行組合然后進行摘要算法(MD5)生成簽名。
對傳輸內容數據用公鑰進行加密。
移動端
- 服務端:
服務端拿到被公鑰加密的傳輸數據,然后用私鑰進行解密拿到所需要的數據內容。
服務端拿到解密后的傳輸數據和private_key
進行和移動端相同的組合然后進行摘要算法生成簽名串在去和拿到的sign
進行對比,如果相同則表示數據沒有被篡改。
服務端