介紹
密鑰散列訊息認證碼(英語:Keyed-hash message authentication code),又稱
散列訊息認證碼(Hash-based message authentication code,縮寫為HMAC),是一種通過特別計算方式之後產生的
訊息認證碼(MAC),使用
密碼散列函式,同時結合一個加密密鑰。它可以用來保證數據的完整性,同時可以用來作某個訊息的
身份驗證。
定義
根據RFC 2104,HMAC的數學公式為:
實現
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 ) )