谭文学信息安全与保密教案 第45/67页:4/21/2013 11:34 AM
PADh表示Hash算法填充。 16. HMAC的过程
谭文学信息安全与保密教案 第46/67页:4/21/2013 11:34 AM
见图(P52图3-7)
MD5和SHA的用块都是64Bytes.设密钥为K0,
谭文学信息安全与保密教案 第47/67页:4/21/2013 11:34 AM
1K0→K;得到K(有三种情况)
++
1).|k|=64直接赋值, K=k, |K|=64下一步2; 2).|k|>64哈希赋值k0=h0=H(k),|k|=16,左边补48
++
个0以产生一个hash用块K, |K|=64, 下一步2, 3)|k|<64;对密钥K左边补64-|k|个0以产生一个
++
hash用块K, |K|=64, 下一步2, ++2.K与ipad(00110110)作XOR以产生Si= K⊕PADi.
+
3).对(Si||M)进行哈希,即:h1=Hash[K⊕PADi||M].
++4).K与opad(01011010)作XOR以产生So= K⊕
++
谭文学信息安全与保密教案 第48/67页:4/21/2013 11:34 AM
PADo;
5).So添加在步骤3所得哈希的左边,记为: So||h1,作为哈希的输入,哈希输出值为MAC。 即:HMAC= h2= Hash [
++
K⊕PADo || Hash[K⊕PADi||M|| PADh] || PADh]
算法过程:最多有3次哈希;最小有两次。 例子:m=”abc”;k=”123”求其HMAC值(哈希算法用MD5)? 解:
char message[]=\
相关推荐: