简介
HMAC(Hash-based Message Authentication Code)即基于哈希的消息认证码,是一种通过将哈希函数与密钥结合来实现消息完整性验证和身份认证的密码学技术。它的核心优势在于能够确保消息在传输过程中未被篡改,同时验证消息的发送方身份。
实现原理
HMAC的实现可由公式描述:
HMAC(K,M)=H[(K^-1 XOR opad)|| H[(K^-1 XOR ipad) || M] ]
其中
- K为原始密钥,K-1为预处理后的密钥
- M为消息,H为哈希函数
- XOR为异或,||表示拼接
- ipad是0x36重复多次的结果,长度取决于哈希函数的分组长度,比如,哈希算法是MD5,则ipad的长度为512
- opad是0x5c重复多次的结果,长度同ipad一样。
密钥预处理
- 如果密钥key小于哈希值长度,则在key的左边填充若干个0,得到预处理后的密钥K-1
- 如果密钥大于哈希值长度,则计算密钥key的哈希值为K-1
实现步骤:
- 密钥预处理得到K-1
- 计算 K^-1 XOR opad 的哈希值
- 计算 K^-1 XOR ipad || M后的哈希值
- 最后拼接前面两个结果得到摘要HMAC。