-
密鑰散列消息認證碼
鎖定
- 中文名
- 密鑰散列消息認證碼
- 外文名
- Keyed-hash message authentication code
- 又 稱
- 散列消息認證碼
- 縮 寫
- HMAC
- 學 科
- 密碼學
- 領 域
- 密碼學
密鑰散列消息認證碼介紹
密鑰散列消息認證碼(英語:Keyed-hash message authentication code),又稱散列消息認證碼(Hash-based message authentication code,縮寫為HMAC),是一種通過特別計算方式之後產生的消息認證碼(MAC),使用密碼散列函數,同時結合一個加密密鑰。它可以用來保證數據的完整性,同時可以用來作某個消息的身份驗證。
[1]
密鑰散列消息認證碼定義
根據RFC 2104,HMAC的數學公式為:
- H為密碼散列函數(如MD5或SHA-1);
- K為密鑰(secret key);
- m是要認證的消息;
- K'是從原始密鑰K導出的另一個秘密密鑰(如果K短於散列函數的輸入塊大小,則向右填充(Padding)零;如果比該塊大小更長,則對K進行散列);
- || 代表串接;
- ⊕ 代表異或(XOR);
- opad是外部填充(0x5c5c5c…5c5c,一段十六進制常量);
- ipad是內部填充(0x363636…3636,一段十六進制常量)。
密鑰散列消息認證碼實現
HMAC通過一個標準算法,在計算哈希的過程中,把key混入計算過程中。和自定義的加salt算法不同,Hmac算法針對各種哈希算法都通用,無論是MD5還是SHA-1。採用Hmac替代我們自己的salt算法,可以使程序算法更標準化,也更安全。
HMAC 支持的算法有: md5、sha1、sha256、sha512、adler32、crc32、crc32b、fnv132、fnv164、fnv1a32、fnv1a64、gost、gost-crypto、haval128,3、haval128,4、haval128,5、haval160,3、haval160,4、haval160,5、haval192,3、haval192,4、haval192,5、haval224,3、haval224,4、haval224,5、haval256,3、haval256,4、haval256,5、joaat、md2、md4、ripemd128、ripemd160、ripemd256、ripemd320、sha224、sha384、snefru、snefru256、tiger128,3、tiger128,4、tiger160,3、tiger160,4、tiger192,3、tiger192,4、whirlpool。
HMAC的加密實現:HMAC (k,m) = H ( (k XOR opad ) + H( (k XORipad ) + m ) )
- H 是一個Hash函數, 比如, MD5, SHA-1and SHA-256,
- k 是一個密鑰,從左到右用0填充到hash函數規定的block的長度,如果密鑰長度大於block的長度,就對先對輸入key作hash,
- m 是需要認證的消息,
- + 代表“連接”運算,
- XOR 代表異或運算,
- opad 是外部填充常數(0x5c5c5c…5c5c,一段十六進制常量),
- ipad 是內部填充常數(0x363636…3636,一段十六進制常量)。
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:0次歷史版本
- 最近更新: sunhyuksun