- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二部分 信息加密与信息隐藏 第3章 单向散列函数 本章导读 随着以Internet为基础的电子商务技术的迅猛发展,以公钥密码术,数字签名等为代表的加密安全技术已成为研究的热点 单向散列函数是数字签名中的一个关键环节,可以大大缩短签名时间并提高安全性 内容 3.1 单向散列函数概述 3.2 MD5算法 3.3 SHA-1算法 3.4 消息认证码(MAC) 3.5 对单向散列函数的攻击 小结 习题 3.1 单向散列函数概述 所谓的单向散列函数(Hash Function,又称哈希函数、杂凑函数),是将任意长度的消息M映射成一个固定长度散列值h(设长度为m)的函数H: h = 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 单向散列函数概述 单向散列函数工作模式 3.1 单向散列函数概述 Hash函数好的性质 广泛的应用性 定长输出 实现性 单向性质 抗弱对抗性 强对抗性 独立性 抗近冲突 安全性 内容 3.1 单向散列函数概述 3.2 MD5算法 3.3 SHA-1算法 3.4 消息认证码(MAC) 3.5 对单向散列函数的攻击 小结 习题 3.2 MD5算法 MD表示消息摘要(Message Digest) MD5是MD4的改进版,该算法对输入的任意长度消息产生128位散列值(或消息摘要) MD5算法包括五个步骤 3.2 MD5算法 1)附加长度 将原消息长度的64位表示附加在填充后的消息后面。当原消息长度大于264时,用消息长度mod 264填充。这时,消息长度恰好是512的整数倍。 令M[0 1…N?1]为填充后消息的各个字(每字为32位),N是16的倍数。 3.2 MD5算法 2)附加填充位 首先填充消息,使其长度为一个比512的倍数小64位的数。填充方法:在消息后面填充一位1,然后填充所需数量的0。填充位的位数从1~512。 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的主循环,包括四轮。每个循环都以当前的正在处理的512比特分组Yq和128比特缓冲值ABCD为输入,然后更新缓冲内容。 3.2 MD5算法 单个512比特分组的MD5主循环处理 3.2 MD5算法 四轮的操作类似,每一轮进行16次操作。各轮的操作过程如图所示。 ( MD5某一轮的1次执行过程 ) 3.2 MD5算法 四轮操作的不同之处在于每轮使用的非线性函数不同.这四个非线性函数分别为(其输入/输出均为32位字): 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)) 其中, ?表示按位与; ?表示按位或;~表示按位反; ?表示按位异或。 3.2 MD5算法 这一步中还用到了一个有64个元素的表T[1..64],T[i]=232×abs(sin(i)),i的单位为弧度。 将这一步骤的处理过程归纳如下: for i = 0 to N/16?1 do /* 每次循环处理16个字,即512位的消息分组*/ /*把A存为AA,B存为BB,C存为CC,D存为DD*/ AA = A BB = B CC = C DD = D 3.2 MD5算法 5) 输出 由A、B、C、D四个寄存器的输出按低位字节在前的顺序(即以A的低字节开始、D的高字节结束)得到128位的消息摘要。 以上就是对MD5算法的描述。MD5算法的运算均为基本运算,比较容易实现且速度很快。 内容
文档评论(0)