hash实验
【实验目的】
(1)了解Hash函数的特点和基本结构
(2)掌握MD5、SHA-512等算法的原理
(3)HMAC算法的代码实现
【实验内容】
(Hash函数是消息验证码的一种变形,是一种能够将任意长度的消息压缩到某一固定长度的消息摘要的函数。)
HMAC是基于Hash函数的消息验证码,MAC是一种确认完整性并进行认证的技术。HMAC的MAC算法是hash算法,它可以是MD5, SHA-1或者 SHA-256,他们分别被称为HMAC-MD5,HMAC-SHA1, HMAC-SHA256。
HMAC用公式表示:H[(K+⊕opad)||H(K+⊕ipad)||M]
其中 H:hash算法,比如(MD5,SHA-1,SHA-256) B:块字节的长度,块是hash操作的基本单位。这里B=64。 L:hash算法计算出来的字节长度。(L=16 for MD5, L=20 for SHA-1)。 K:共享密钥,K的长度可以是任意的,但是为了安全考虑,还是推荐K的长度>B。当K长度大于B时候,会先在K上面执行hash算法,将得到的L长度结果作为新的共享密钥。 如果K的长度<B, 那么会在K后面填充0x00一直到等于长度B。 M:要加密的内容 opad:外部填充常量,是 0x5C 重复B次。 ipad:内部填充常量,是0x36 重复B次。 ⊕:异或运算。
计算步骤如下: 1. 将0x00填充到K的后面,直到其长度等于B。 2. 将步骤1的结果跟 ipad做异或。 3. 将要加密的信息附在步骤2的结果后面。 4. 调用H方法。 5. 将步骤1的结果跟opad做异或。 6. 将步骤4的结果附在步骤5的结果后面。 7. 调用H方法。
【实验代码】
【实验结果】