HMAC
電腦通訊雜湊演算法
此條目可參照英語維基百科相應條目來擴充。 |
HMAC (有時擴充為 英語:keyed-hash message authentication code, 金鑰雜湊訊息鑑別碼, 或 英語:hash-based message authentication code,雜湊訊息鑑別碼),是一種通過特別計算方式之後產生的訊息鑑別碼(MAC),使用密碼雜湊函式,同時結合一個加密金鑰。它可以用來保證資料的完整性,同時可以用來作某個訊息的身分驗證。
定義
根據RFC 2104,HMAC的數學公式為:
其中:
實現
下面的虛擬碼展示了如何實現HMAC。當使用以下雜湊函式之一時,塊大小為64(位元組):SHA-1、MD5、RIPEMD-128/160[1]。
function hmac (key, message) { if (length(key) > blocksize) { key = hash(key) // keys longer than blocksize are shortened } if (length(key) < blocksize) { // keys shorter than blocksize are zero-padded (where ∥ is concatenation) key = key ∥ [0x00 * (blocksize - length(key))] // Where * is repetition. } o_key_pad = [0x5c * blocksize] ⊕ key // Where blocksize is that of the underlying hash function i_key_pad = [0x36 * blocksize] ⊕ key // Where ⊕ is exclusive or (XOR) return hash(o_key_pad ∥ hash(i_key_pad ∥ message)) // Where ∥ is concatenation }