hmac
HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。hmac主要应用在身份验证中.
标准hmac过程
算法公式
HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M))
- H 代表所采用的HASH算法(如SHA-256)
- K 代表认证密码
- Ko 代表HASH算法的密文
- M 代表一个消息输入
B 代表H中所处理的块大小,这个大小是处理块大小,而不是输出hash的大小
如,SHA-1和SHA-256 B = 64 SHA-384和SHA-512 B = 128
- L 表示hash的大小
- Opad 用0x5c重复B次
- Ipad 用0x36重复B次
- Apad 用0x878FE1F3重复(L/4)次
HMAC运算步骤
First-Hash = H(Ko XOR Ipad || (data to auth))
Second-Hash = H(Ko XOR Opad || First-Hash)
- 在密钥K后面添加0来创建一个字长为B的字符串。(例如,如果K的字长是20字节,B=64字节,则K后会加入44个零字节0x00)
- 将上一步生成的B字长的字符串与ipad做异或运算。
- 将数据流text填充至第二步的结果字符串中。
- 用H作用于第三步生成的数据流。
- 将第一步生成的B字长字符串与opad做异或运算。
- 再将第四步的结果填充进第五步的结果中。
- 用H作用于第六步生成的数据流,输出最终结果