文章目录
- 一、什么是HMAC
- 二、HMAC的步骤
一、什么是HMAC
HMAC是一种使用单向散列函数来构造消息认证码的方法(RFC2104),其中 HMAC的H就是Hash的意思。
HMAC 中所使用的单向散列函数并不仅限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出新的单向散列函数,也同样可以使用。
使用SHA-1、SHA-224、SHA-256、SHA-384、SHA-512所构造的HMAC,分别称为HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512。
二、HMAC的步骤
下面是 HMAC 的步骤:
- 选择一个适当的哈希函数 H,通常使用 SHA-256、SHA-384 或 SHA-512 等安全的哈希函数。
- 确定一个密钥 K,长度可以是任意值。如果密钥长度不足 H 函数的输入块长度,则需要对密钥进行填充。
- 对密钥进行预处理。如果密钥长度超过 H 函数的输入块长度,则需要将 K 哈希成 H 函数的输出长度。
- 对消息 M 进行填充,使其满足 H 函数的输入块长度要求。
- 将处理后的密钥 K 和填充后的消息 M 输入到 HMAC 算法中。
- HMAC 算法根据以下公式计算哈希值:
HMAC(K, M) = H((K ⊕ opad) || H((K ⊕ ipad) || M))
其中,“||”表示拼接,opad 和 ipad 是固定的填充值,分别为 0x5c 和 0x36。
输出 HMAC 值作为消息的认证码。
注意,为了提高安全性,每个消息都应该使用不同的密钥。如果多个消息使用相同的密钥,则可能会存在安全隐患。