MD(消息摘要)、MAC(消息認證碼)、數字簽名的區別
1.MD(消息摘要)
1.1摘要含義
摘要
摘要是哈希值,我們通過散列算法比如MD5算法就可以得到這個哈希值。
摘要只是用於驗證數據完整性和唯一性的哈希值,不管原始數據是什么樣的,得到的哈希值都是固定長度的。
不管原始數據是什么樣的,得到的哈希值都是固定長度的,也就是說摘要並不是原始數據加密后的密文,只是一個驗證身份的令牌。所以我們無法通過摘要解密得到原始數據。
2.MAC(消息認證碼)
hash算法只能驗證數據的完整性,不能防止數據被篡改。比如:遇見中間人攻擊,你會發現攻擊者對消息進行篡改了,但是通過hash算法計算摘要值,你是無法知道消息被改動過的。因此這個時候就需要MAC算法了。
MAC值 = mac(消息+密鑰)
2.2MAC的特點
跟hash算法一樣,可以驗證數據的完整性。
可以驗證數據確實是由原始發送方發出的。
MAC值一般和原始消息一起傳輸,原始消息可以選擇加密,也可以選擇不加密,通信雙方會以相同的方式生成MAC值,然后進行比較,一旦兩個MAC值相同表示MAC驗證正確,否則驗證失敗。
3.數字簽名
MAC不能保證消息的不可抵賴性,而數字簽名可以保證。
因為數字簽名使用的是公鑰密碼體制,私鑰只有你自己才知道;而MAC使用對稱加密,既然一方能夠驗證你的MAC,就能夠偽造你的MAC,因為發送方和接收方的秘鑰是一樣的。當然如果你在MAC中綁定一些關鍵信息,並通過某些手段,讓一方只能生成MAC,另一方只能驗證MAC,其實也是可以實現簽名效果的。