一、什么是HMAC
HMAC是一種使用單向散列函數(shù)來構(gòu)造消息認證碼的方法(RFC2104),其中 HMAC的H就是Hash的意思。
HMAC 中所使用的單向散列函數(shù)并不僅限于一種,任何高強度的單向散列函數(shù)都可以被用于HMAC,如果將來設(shè)計出新的單向散列函數(shù),也同樣可以使用。
使用SHA-1、SHA-224、SHA-256、SHA-384、SHA-512所構(gòu)造的HMAC,分別稱為HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512。
二、HMAC的步驟
下面是 HMAC 的步驟:文章來源:http://www.zghlxwxcb.cn/news/detail-562363.html
- 選擇一個適當(dāng)?shù)墓:瘮?shù) H,通常使用 SHA-256、SHA-384 或 SHA-512 等安全的哈希函數(shù)。
- 確定一個密鑰 K,長度可以是任意值。如果密鑰長度不足 H 函數(shù)的輸入塊長度,則需要對密鑰進行填充。
- 對密鑰進行預(yù)處理。如果密鑰長度超過 H 函數(shù)的輸入塊長度,則需要將 K 哈希成 H 函數(shù)的輸出長度。
- 對消息 M 進行填充,使其滿足 H 函數(shù)的輸入塊長度要求。
- 將處理后的密鑰 K 和填充后的消息 M 輸入到 HMAC 算法中。
- HMAC 算法根據(jù)以下公式計算哈希值:
HMAC(K, M) = H((K ⊕ opad) || H((K ⊕ ipad) || M))
其中,“||”表示拼接,opad 和 ipad 是固定的填充值,分別為 0x5c 和 0x36。
輸出 HMAC 值作為消息的認證碼。
注意,為了提高安全性,每個消息都應(yīng)該使用不同的密鑰。如果多個消息使用相同的密鑰,則可能會存在安全隱患。文章來源地址http://www.zghlxwxcb.cn/news/detail-562363.html
到了這里,關(guān)于密碼學(xué)入門——HMAC的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!