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

移動端
- 服務(wù)端:
服務(wù)端拿到被公鑰加密的傳輸數(shù)據(jù),然后用私鑰進行解密拿到所需要的數(shù)據(jù)內(nèi)容。
服務(wù)端拿到解密后的傳輸數(shù)據(jù)和private_key進行和移動端相同的組合然后進行摘要算法生成簽名串在去和拿到的sign進行對比,如果相同則表示數(shù)據(jù)沒有被篡改。
服務(wù)端
