HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)的缩写,在1997发布的RFC2104中被公布。它可以与任何迭代HASH函数(SHA1/SHA2)捆绑使用。
协议标准:RFC 2104: HMAC: Keyed-Hashing for Message Authentication
HMAC处理流程如下图所示:
1. 密钥处理:
当K的长度不大于Hash Block Size时,在K的尾部填充0,直到长度为Hask Block Size。
当K的长度大于Hash Block Size时,先做K做一次Hash。
2. 第1次Hash处理: Hash(ipad ⊕ K' || M)
3. 第2次Hash处理: Hash((opad ⊕ K') || Hash(ipad ⊕ K' || M))
其中:
ipad为常量0x36...36,长度为Hash Block Size;
opad为常量0x5c...5c,长度为Hash Block Size;
K'为密钥处理后的密钥;
M为输入消息。