网站大量收购独家精品文档,联系QQ:2885784924

第3章_单向散列函数重点.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Network and Information Security 3.3.3 SHA–1与MD5的比较 SHA–1与MD5的比较如表3-1所示。 表3-1 SHA-1与MD5的比较 ? SHA-1 MD5 Hash值长度 160 bit 128 bit 分组处理长 512 bit 512 bit 步数 80(4×20) 64(4×16) 最大消息长 ≤264 bit 不限 非线性函数 3(第2、4轮相同) 4 常数个数 4 64 ft (B,C,D) = (B ? C) ?(~B ? D) (0≤t≤19) ft (B,C,D) = B ? C ? D (20≤t≤39) ft (B,C,D) = (B ? C) ?(B ? D) ?(C ? D) (40≤t≤59) ft (B,C,D) = B ? C ? D (60≤t≤79) F(X,Y,Z) = (X ? Y)? ((~X) ? Z) G(X,Y,Z) = (X ? Z) ?(Y ? (~Z)) H(X,Y,Z) = X ? Y ?Z I(X,Y,Z) = Y ?(X ?(~Z)) Network and Information Security 根据各项特征,简要地说明它们间的不同。 (1)安全性:SHA-1所产生的摘要较MD5长32位。若两种散列函数在结构上没有任何问题的话,SHA-1比MD5更安全。 (2)速度:两种方法都考虑了以32位处理器为基础的系统结构,但SHA-1的运算步骤较MD5多了16步,而且SHA-1记录单元的长度较MD5多了32位。因此若是以硬件来实现SHA-1,其速度大约较MD5慢25%。 (3)简易性:两种方法都相当的简单,在实现上不需要很复杂的程序或是大量的存储空间。然而总体上来讲,SHA-1每一步的操作都较MD5简单。 Network and Information Security 3.4 消息认证码(MAC) 与密钥相关的单向散列函数通常称为MAC,即消息认证码: MAC=CK(M) 其中,M为可变长的消息;K为通信双方共享的密钥;C为单向函数。 MAC可为拥有共享密钥的双方在通信中验证消息的完整性;也可被单个用户用来验证他的文件是否被改动,如图3-6所示。 Network and Information Security 图3-6 MAC应用于消息认证 若没有K, 能否验证消息的完整性? 不能 如攻击者将消息M 和摘要都替换了,将不能验证原消息的完整性 Network and Information Security RFC 2104定义的HMAC算法HMAC全称为Keyed-Hash Message Authentication Code, 它用一个秘密密钥来产生和验证MAC HMAC中用到的参数和符号: B:计算消息摘要时输入块的字节长度(如对于SHA-1, B = 64)。 H:散列函数,如SHA-1,MD5等。 ipad:将数值0x36重复B次。 opad:将数值0x5c重复B次。 K:共享密钥。 K0 :在密钥K的左边附加0使其长为B字节的密钥。 L:消息摘要的字节长度(如对于SHA-1,L = 20)。 t:MAC的字节数。 Network and Information Security text:要计算HMAC的数据。数据长度为n字节,n的最大值依赖于采用的hash函数。 X || Y:将字串连接起来,即把字串Y附加在字串X后面。 :异或。 密钥K的长度应大于或等于L/2。当使用长度大于B的密钥时,先用H对密钥求得散列值,然后用得到的L字节结果作为真正的密钥。 利用HMAC函数计算数据text的MAC过程如图3-7所示。 Network and Information Security 图3-7 HMAC结构 Network and Information Security 由图可知,HMAC执行的是如下操作: MAC(text)t = HMAC(K, text)t = H((K0 opad )|| H((K0 ipad) || text))t 具体操作步骤如下: (1) 如果K的长度等于B,设置K0 = K并跳转到第(4)步。 (2) 如果K的长度大于B,对K求散列值:K0 = H(K)。 (3) 如果K的长度小于B,在K的左边附加0得到B字节的K0。 (4) 执

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档