摘要算法:HMAC
基于Hash的消息認(rèn)證碼(Hash-based Message Authentication Code,HMAC)是用于驗(yàn)證消息的一種機(jī)制,相對(duì)于單純的摘要函數(shù),HMAC能夠基于雙方事先確定的密碼生成唯一的摘要值。盡管MD5算法已經(jīng)被證明不安全,但使用HMAC機(jī)制的MD5至今仍未被攻破。
設(shè)雙方使用算法H作為摘要函數(shù),K為雙方密鑰(要求K長度不大于H分組長度B,比如H為MD2時(shí),K長度不大于16)。定義opad為長B字節(jié)、值為0x36的數(shù)組,ipad為長B字節(jié)、值為0x5C的數(shù)組。HMAC即為
H(K ^ opad, H(K ^ ipad, text))
(1)首先在K后面添0,使其長度為B。
(2)計(jì)算K和ipad的異或F,并將待計(jì)算摘要數(shù)據(jù)text放在F的后面。
(3)對(duì)(2)結(jié)果計(jì)算摘要。
(4)計(jì)算K和opad的異或G,將(3)結(jié)果放在G的后面。
(5)計(jì)算(4)中結(jié)果的摘要,得到HMAC。
C語言實(shí)例如下:
標(biāo)簽: