MD5加密算法探究和应用

上传人:l**** 文档编号:148932471 上传时间:2020-10-23 格式:DOC 页数:25 大小:514KB
返回 下载 相关 举报
MD5加密算法探究和应用_第1页
第1页 / 共25页
MD5加密算法探究和应用_第2页
第2页 / 共25页
MD5加密算法探究和应用_第3页
第3页 / 共25页
MD5加密算法探究和应用_第4页
第4页 / 共25页
MD5加密算法探究和应用_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《MD5加密算法探究和应用》由会员分享,可在线阅读,更多相关《MD5加密算法探究和应用(25页珍藏版)》请在金锄头文库上搜索。

1、. . . . MD5加密算法探究及其应用引言MD5加密算法作为一种免费的加密算法,广泛地应用于计算机,数据安全传输,数字签名认证等安全领域MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),是由Ron Rivest (RSA 算法的发明人之一,于2002年获得图灵奖)于90年代初提出,经MD2,MD3和MD4发展而来的Rivest 最早于1989年提出了MD2算法针对8位计算机做了优化,为了提高算法的安全性与稳定性,Rivest在1990年又开发出MD4算法,但人们很快发现了MD4算法的漏洞随后在1991年,Rivest开发出来技术上更加稳定安全更趋于成熟的

2、MD5算法1993年,美国国家标准和技术协会(NIST)提出了安全散列算法(SHA)1995年又发布了一个修订版,即SHA-1.SHA-1与MD5均由MD4导出,所以彼此很相似相应的,它们的强度和其他特征也是相似的2004年8月17日于美国加州圣巴巴拉召开的国际密码学会议(Crypto 2004)上,来自大学的王小云教授做了破译MD5,HAVAL-128,MD4和RIPEMD算法的报告,宣告了MD系列算法的破解对于一个进行身份认证的摘要算法来说,MD5已经是不安全了,但是很多实际的应用领域MD5还有它的使用价值的,所以我们分析探究它的加密原理,我们在此基础上对它的加密进行改进利用,对于我们今后

3、的加密安全工作还是很有帮助的1.预备知识1.1 Hash函数Hash函数是一种将任意长度的信息压缩到某一固定长度的消息摘要的函数,又称Hash算法Hash函数必须满足一定的安全条件这里主要介绍三个主要的方面:单向性,弱抗碰撞性,强碰撞性单向性是指对Hash函数h而言,又x计算h(x)是容易的,但从h(x)计算x是不可行的一个弱碰撞的Hash函数是满足下列条件的一个函数h: h的输入 可以是任意长度的消息或文件ph的输出长度是固定的给定h和M,计算h(p)是很容易的给定h和一个随机选择的消息p1,找到另一个消息p2,p1p2使得h(p1)=h(p2)计算上是不可行的一个强碰撞的Hash函数是满足

4、下列条件的一个函数h:h的输入 可以是任意长度的消息或文件ph的输出长度是固定的给定h和M,计算h(p)是很容易的给定h,找到两个不同的消息p1,p2 ,使得h(p1)=h(p2)在计算上是不可行的(如果有两个不同的消息M,M,使得h(M)=h(M),我们就说这两个消息是碰撞的)1.2 16进制的相关知识十六进制在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F表示(A-F表示10-15)十六进制转换成二进制的比特流(第一列16进制,第二列2进制)0123456789ABCDEF0000000100100011010001010110011110001001101010111100

5、110111101111例如:十六进制为9FD,那么在计算机中二进制表示1(9=1001,F=1111,D=1101)1.3 逻辑运算 逻辑“与”运算,用“”表示真值表表示为pq111100010000二进制按位逻辑“与”运算,即逐位进行逻辑“与”运算,并将逐位逻辑运算的结果进行组合得到的结果例如:如果 ,那么例如:如果,那么首先把转换为二进制为;其次把转换而二进制位;最后按位进行逻辑“与”运算结果为 逻辑“或”运算,用“|”表示真值表表示为:pq|111101011000 逻辑“异或”运算,用“”表示真值表表示为:pq110101011000 逻辑“取反”运算二进制数的所有0改为,1改为0,

6、这个过程叫“取反”例如:如果,那么1.4 模运算基本概念给定一个正整数,任意一个整数,一定存在等式 ;其中是整数,且,称为除以的商,为除以的余数对于正整数和整数,定义如下运算: 模加法: ,其结果是算术和除以的余数,也就是说,则例如:,那么(注这里“+”是模加法运算)首先将转换为二进制为;其次将转换为二进制为 然后逐位相加结果为1110因为实行的是二进制数据,逢2向前一位进1,所以最终结果为:01110,这个结果的十进制是:,然后模,结果为,它的二进制表示为:11102. MD5加密算法的原理简单的说,MD5加密以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过一系列

7、的处理后,算法的输出有4个32位分组组成,将这4个32位分组级联后将生成一个128位散列值第一步:消息的填充如果输入的消息的长度(以bit位单位)对512求余的结果不等于448,就需要填充使得对512求余的结果等于448,填充的方法是附加一个“1”在消息后面,再补充多个“0”,然后在其后附上64比特的消息长度(填充前)的二进制表示这两步的作用是使最终填充后的消息恰好是512比特的整倍长,同时确保不同的消息在填充后不会相同第二步:记录消息长度用64位来存储填充前消息长度,这64位加在第一步结果的后面,这样消息长度就变为N*512+448+64=(N+1)*512(bits)第三步:加载初始标准数

8、据算法中使用了四个32比特的变量A,B,C,D,先将这四个变量初始化为: 称它们为变量,接着进行算法的主循环,循环的次数是消息中512比特的块的数目将上面四个标准变量复制到另外四个变量中:A到a,B到b,C到c,D到d第四步:四轮循环运算循环的次数是分组的个数(N+1),每轮循环都很相似,每次操作对abcd中的其中三个作一次非线性函数运算,然后将所得的结果加上第四个变量,文本的一个子分组和一个常数,再将所得结果向左位移一个不定的数,并加上a,b,c,d中之一,最后用该结果取代a,b,c,d中之一设XY表示输入的块,下面描述一些运算:(1)表示与按位逻辑“与”运算(2)表示与按位逻辑“或”运算(

9、3)表示与按位逻辑“异或”运算(4)表示的按位逻辑取“反”(5)+表示整数模加法运算(6)表示将循环左移个单位有四个非线性函数,每轮一个这四个函数的说明:如果,,的对应的位是独立和均匀的,那么结果的每一位也应该是均匀的其中是一个逐位运算的函数,即,如果,那么,否则函数是逐位奇偶操作符(其中“”是逻辑“与”运算,“|”是逻辑“或”运算,“”逻辑“异或”运算,“”逻辑“取反”运算)四轮运算是:假设表示消息的第个子分组(从0到15),表示循环左移位表示表示表示表示这四轮(64步)是:第一轮 第二轮 第三轮 第四轮 其中常数可以如下选择:在第步中,是的整数部分,的单位是弧度等于的次方所有这些完成之后,

10、将A、B、C、D分别加上a、b、c、d然后用下一分组数据继续运行算法,最后的输出是A、B、C和D的级联3.运算原理简举例例如:计算解:不妨假设:要加密的信息为abc,其比特串为01100001 01100010 01100011它的长度是24位,于是添加1个“1”,423个“0”,再加上64比特串(24)=00000000 00000018即x=01100001 01100010 01100011 1 00 00000000 00000018,共512比特,只有16分组为,所以有=00000000=00000018首先计算出A=0000 0001 0010 0011 0100 0101 011

11、0 0111=B=1000 1001 1010 1011 1100 1101 1110 1111=C=1111 1110 1101 1100 1011 1010 1001 1000=D=0111 0110 0101 0100 0011 0010 0001 0000=其次计算 =(1000 1001 1010 1011 1100 1101 1110 11111111 1110 1101 1100 1011 1010 1001 1000)|(0111 0110 0101 0100 0011 0010 0001 00000111 0110 0101 0100 0011 0010 0001 0000)

12、 =(1000 1000 1000 1000 1000 1000 1000 1000)|(0111 0110 0101 0100 0011 0010 0001 0000) =1111 1110 1101 1100 1011 1010 1001 1000转换为二进制为1101 0111 0110 1010 1010 0100 0111 1000结果为 =(1000 1001 1010 1011 1100 1101 1110 1111)+(0000 0001 0010 0011 0100 0101 0110 0111+1111 1110 1101 1100 1011 1010 1001 1000+

13、0000 0001 0001 0000 0000 0000 0001 0000)+1101 0111 0110 1010 1010 0100 0111 1000) =(1000 1001 1010 1011 1100 1101 1110 1111)+(0000 0000 0011 1000 0000 0000 0000 1111+1101 0111 0110 1010 1010 0100 0111 1000) =(1000 1001 1010 1011 1100 1101 1110 1111)+(1101 0111 1010 0010 1010 0100 1000 0111) =(1000 1001 1010 1011 1100 1101 1110 1111)+(0000 1111 1010 1111 0100 0101 0100 1001) =1001 1001 0101 1011

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号