簡述MAC算法
在前面的文章中,我們介紹了哈希算法,今天我們來聊一個帶密鑰的Hash函數(shù)——MAC算法。
什么是MAC算法?
MAC(Message Authentication Codes),是一種消息摘要算法,也叫消息認證碼算法。這種算法的核心是基于秘鑰的散列函數(shù)。可以簡單這樣理解,MAC算法是MD5算法和SHA算法的升級版,是在這兩種算法的基礎(chǔ)上,又加入了秘鑰的概念,所以會更加安全。
為什么需要MAC算法?
Hash算法只可以驗證數(shù)據(jù)的完整性,但是無法保證數(shù)據(jù)防篡改。

乍一看,好像上述的示例是成立的,但是一旦遇到“中間人攻擊”。

你會發(fā)現(xiàn)攻擊者對消息進行篡改了,但是通過Hash算法計算摘要值,你是無法知道消息被改動過的。因此這個時候就需要MAC算法了。
MAC算法的特點
跟Hash算法一樣,可以驗證數(shù)據(jù)的完整性,可以驗證數(shù)據(jù)確實是由原始發(fā)送方發(fā)出的。

發(fā)送端根據(jù)消息和一個mac算法,生成mac秘鑰,將mac秘鑰和消息同時發(fā)送,接收端收到消息,用同樣的mac算法,得到mac秘鑰,判斷自己生成mac秘鑰和接收到的mac秘鑰是否一致,從而判斷消息是否一致。
MAC算法的種類
MAC算法是含有密鑰的散列算法,兼容MD和SHA算法,在此基礎(chǔ)上添加了密鑰支持,因此也被稱為Hmac算法,定義在RFC 2014中,分為兩大分支MD和SHA分支:
MD分支:Hmac-MD2、Hmac-MD4、Hmac-MD5。
SHA分支:Hmac-SHA1、Hmac-SHA256、Hmac-SHA384、Hmac-SHA512、Hmac-SHA224等。
MAC算法應(yīng)用于很多場景,如linux客戶端的SecureCRT,Google身份驗證器、銀聯(lián)pos機終端等,都可以看到MAC算法的影子。
免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。









