消息認(rèn)證碼與哈希算法的區(qū)別
消息認(rèn)證碼與哈希算法的區(qū)別
(1)Hash的定義
Hash,一般翻譯做“散列”,也有直接音譯為"哈希"的,就是把任意長(zhǎng)度的輸入通過(guò)散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,而不可能從散列值來(lái)唯一的確定輸入值。簡(jiǎn)單的理解就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。
(2)MAC的定義
消息認(rèn)證碼(帶密鑰的Hash函數(shù)):密碼學(xué)中,通信實(shí)體雙方使用的一種驗(yàn)證機(jī)制,保證消息數(shù)據(jù)完整性的一種工具。安全性依賴(lài)于Hash函數(shù),故也稱(chēng)帶密鑰的Hash函數(shù)。消息認(rèn)證碼是基于密鑰和消息摘要所獲得的一個(gè)值,可用于數(shù)據(jù)源發(fā)認(rèn)證和完整性校驗(yàn)。
(3)兩者的區(qū)別
通過(guò)定義可以發(fā)現(xiàn)MAC是通過(guò)MAC算法+密鑰+消息生成的。MAC算法有很多種。我們常用的Hash算法,有MD5、SHA等。而用這些Hash算法作為MAC算法,通過(guò)計(jì)算得到的MAC值,也就是HMAC,所以MAC與HMAC沒(méi)有太大差別。
Hash與MAC的區(qū)別,Hash只能保證消息的完整性,MAC不僅能夠保證完整性,還能夠保證真實(shí)性。比如A想給B發(fā)送一條消息,A需要把消息內(nèi)容和對(duì)應(yīng)的消息摘要都發(fā)給B;B通過(guò)同樣的摘要算法計(jì)算摘要,就可以知道消息是否被篡改。此時(shí)如果攻擊者C將A發(fā)送的原始消息和摘要都篡改成新的消息和摘要,那么這個(gè)消息對(duì)B來(lái)說(shuō)也是完整的,只不過(guò)不是A發(fā)的。而MAC含有密鑰這個(gè)種子(只有A和B知道),如果A將消息內(nèi)容和MAC發(fā)給B,雖然C是仍然可以修改消息內(nèi)容和MAC,但是由于C不知道密鑰,所以無(wú)法生成與篡改后內(nèi)容匹配的MAC。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
三相變壓器相關(guān)文章:三相變壓器原理 熱式質(zhì)量流量計(jì)相關(guān)文章:熱式質(zhì)量流量計(jì)原理 流量計(jì)相關(guān)文章:流量計(jì)原理 熱保護(hù)器相關(guān)文章:熱保護(hù)器原理