數字簽名的作用是我對某一份數據打個標記,表示我認可了這份數據(簽了個名),然后我發送給其他人,其他人可以知道這份數據是經過我認證的,數據沒有被篡改過。
數字簽名
服務端:
1、首先用一種算法,算出原始數據的摘要。需滿足 a.若原始數據有任何變化,計算出來的摘要值都會變化。 b.摘要要夠短。這里最常用的算法是MD5。
2、生成一份非對稱加密的公鑰和私鑰,私鑰我自己拿著,公鑰公布出去。
3、對一份數據,算出摘要后,用私鑰加密這個摘要,得到一份加密后的數據,稱為原始數據的簽名。把它跟原始數據一起發送給用戶。
用戶:
4、用戶收到數據和簽名后,用公鑰解密得到摘要。同時用戶用同樣的算法計算原始數據的摘要,對比這里計算出來的摘要和用公鑰解密簽名得到的摘要是否相等,若相等則表示這份數據中途沒有被篡改過,因為如果篡改過,摘要會變化。
常用的摘要算法:
【MD5碼】:信息摘要算法,摘要長度為128位
【SHA】(安全散列算法):SHA-1算法摘要信息長度為160 位,比MD5更慢,但是更安全
【MAC算法】:帶有密碼信息的信息摘要算法,是對MD和SHA算法的演變和改進
【十六進制編碼】
【Base64編碼】