HMAC详解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页共2页HMAC整理:太虚野老HMAC是密钥相关的哈希运算消息认证码(Hash-basedMessageAuthenticationCode),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。定义HMAC需要一个加密用散列函数(表示为H)和一个密钥K。我们假设H是一个将数据块用一个基本的迭代压缩函数来加密的散列函数。我们用B来表示数据块的字长。(以上说提到的散列函数的分割数据块字长B=64),用L来表示散列函数的输出数据字长(MD5中L=16,SHA—1中L=20)。鉴别密钥的长度可以是小于等于数据块字长的任何正整数值。应用程序中使用的密钥长度若是比B大,则首先用使用散列函数H作用于它,然后用H输出的L长度字符串作为在HMAC中实际使用的密钥。一般情况下,推荐的最小密钥K长度是L个字长。(与H的输出数据长度相等)。我们将定义两个固定且不同的字符串ipad,opad:(‘i','o'标志内部与外部)Ipad=对字节0x36循环B次(ipad长度为B字节)。Opad=对字节0x5C循环B次(opad长度为B字节)。计算’text’的HMAC:H(KXORopad,H(KXORipad,text))即为以下步骤:(1)在密钥K后面添加0来创建一个子长为B的字符串。(例如,如果K的字长是20字节,B=60字节,则K后会加入44个零字节0x00)(2)将上一步生成的B字长的字符串与ipad做异或运算。第2页共2页(3)将数据流text填充至第二步的结果字符串中。(4)用H作用于第三步生成的数据流。(5)将第一步生成的B字长字符串与opad做异或运算。(6)再将第四步的结果填充进第五步的结果中。(7)用H作用于第六步生成的数据流,输出最终结果

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功