第03章 单向散列函数概要1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第03章 单向散列函数概要1

单 向 散 列 函 数 第三章 本章提要 3.1 单向散列函数概述 3.2 MD5算法 3.3 SHA-1算法 3.4 消息认证码(MAC) 3.5 对单向散列函数的攻击 网络安全的四个安全要素 3.1 单向散列函数概述 单向散列函数的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段密文。 单向散列函数(Hash Function,又称哈希函数、杂凑函数),是将任意长度的消息M映射成一个固定长度散列值h的函数: h=H(M) h的长度为m。 3.1 单向散列函数概述 散列函数要具有单向性,则必须满足如下特性: 给定M,很容易计算h。 给定h,根据H(M)=h反推M很难。 给定M,要找到另一消息M’并满足H(M)=H(M’)很难。 在某些应用中,单向散列函数还需要满足抗碰撞(Collision)的条件:要找到两个随机的消息M和M,使H(M)=H(M)满足很难。 3.1 单向散列函数概述 压缩函数的输入是消息分组和前一分组的输出(对第一个压缩函数,其输入为消息分组1和初始化向量IV);输出是到该点的所有分组的散列,即分组Mi的散列为 hi=f (Mi, hi?1) 该散列值和下一轮的消息分组一起作为压缩函数下一轮的输入。最后一分组的散列就是整个消息的散列。单向散列函数还经常用于消息认证(防篡改)、数字签名。 3.2 MD5算法 MD表示消息摘要(Message Digest)。MD5是MD4的改进版,该算法对输入的任意长度消息产生128位散列值(或消息摘要)。 3.2 MD5算法 1) 附加填充位 长度为一个比512的倍数小64位的数。填充方法:在消息后面填充一位1,然后填充所需数量的0。填充位的位数从1~512。 2) 附加长度 将原消息长度的64位表示附加在填充后的消息后面。当原消息长度大于264时,用消息长度mod 264填充。这时,消息长度恰好是512的整数倍。令M[0 1…N?1]为填充后消息的各个字(每字为32位),N是16的倍数。 MD5填充消息 “abc”(ASCII码值61 62 63) 填充消息:消息长24b,先填充1位1,然后填充423位0,再用消息长24,即000000018填充,则: M[0] = M[1] = M[2] = M[3] =M[4] = M[5] =M[6] = M[7] =M[8] = M[9] =M[10] M[11]M[12] M[13]M[14] M[15]课堂练习 求字符串“123456”(ASCII码值31 32 33 34 35 36)的MD5填充消息 填充消息:消息长48,先填充1位1,然后填充423位0,再用消息长48,即000000030填充,则: M[0] = M[1] = M[2] = M[3] =…… M[12] M[13]M[14] M[15]3.2 MD5算法 3) 初始化MD缓冲区 初始化用于计算消息摘要的128位缓冲区。这个缓冲区由四个32位寄存器A、B、C、D表示。寄存器的初始化值为(按低位字节在前的顺序存放): A: 01 23 45 67 B: 89 ab cd ef C: fe dc ba 98 D: 76 54 32 10 3.2 MD5算法 4) 按512位的分组处理输入消息 这一步为MD5的主循环,包括四轮,如图3-3所示。每个循环都以当前的正在处理的512比特分组Yq和128比特缓冲值ABCD为输入,然后更新缓冲内容。 3.2 MD5算法 3.2 MD5算法 四轮操作的不同之处在于每轮使用的非线性函数不同,在第一轮操作之前,首先把A、B、C、D复制到另外的变量a、b、c、d中。这四个非线性函数分别为(其输入/输出均为32位字): F(X,Y,Z) =(XY)|((~X)Z) G(X,

文档评论(0)

676200 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档