摘要算法:HMAC
基于Hash的消息认证码(Hash-based Message Authentication Code,HMAC)是用于验证消息的一种机制,相对于单纯的摘要函数,HMAC能够基于双方事先确定的密码生成唯一的摘要值。尽管MD5算法已经被证明不安全,但使用HMAC机制的MD5至今仍未被攻破。
设双方使用算法H作为摘要函数,K为双方密钥(要求K长度不大于H分组长度B,比如H为MD2时,K长度不大于16)。定义opad为长B字节、值为0x36的数组,ipad为长B字节、值为0x5C的数组。HMAC即为
H(K ^ opad, H(K ^ ipad, text))
(1)首先在K后面添0,使其长度为B。
(2)计算K和ipad的异或F,并将待计算摘要数据text放在F的后面。
(3)对(2)结果计算摘要。
(4)计算K和opad的异或G,将(3)结果放在G的后面。
(5)计算(4)中结果的摘要,得到HMAC。
C语言实例如下: