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

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