欢迎来到天天文库
浏览记录
ID:797065
大小:562.03 KB
页数:25页
时间:2017-09-05
《md5加密算法探究及其应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、MD5加密算法探究及其应用引言MD5加密算法作为一种免费的加密算法,广泛地应用于计算机,数据安全传输,数字签名认证等安全领域.MD5的全称是Message-DigestAlgorithm5(信息-摘要算法),是由RonRivest(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日于美国加州圣巴巴拉召开的国际密码学会议(Crypto2004)上,来自山东大学的王小云教授做了破译MD5,HAVAL-128,MD4和RIPEMD算法的报告,宣告了MD系列算法的破解.对于一个进行身份认证的摘要算法来说,MD5已经是不安全了,但是很多实际的应用领域MD5还有它的使用价值的,所以我们分析探究它的加
3、密原理,我们在此基础上对它的加密进行改进利用,对于我们今后的加密安全工作还是很有帮助的.1.预备知识1.1Hash函数Hash函数是一种将任意长度的信息压缩到某一固定长度的消息摘要的函数,又称Hash算法.Hash函数必须满足一定的安全条件.这里主要介绍三个主要的方面:单向性,弱抗碰撞性,强碰撞性.单向性是指对Hash函数h而言,又x计算h(x)是容易的,但从h(x)计算x是不可行的.一个弱碰撞的Hash函数是满足下列条件的一个函数h:h的输入可以是任意长度的消息或文件ph的输出长度是固定的给定h和M,计算h(p)是很容易的给定h和一个随机选择的消息p1,找到
4、另一个消息p2,p1p2使得h(p1)=h(p2)计算上是不可行的.一个强碰撞的Hash函数是满足下列条件的一个函数h:h的输入可以是任意长度的消息或文件ph的输出长度是固定的给定h和M,计算h(p)是很容易的给定h,找到两个不同的消息p1,p2,使得h(p1)=h(p2)在计算上是不可行的.(如果有两个不同的消息M,M,使得h(M)=h(M),我们就说这两个消息是碰撞的)1.216进制的相关知识十六进制在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F表示(A-F表示10-15).十六进制转换成二进制的比特流(第一列16进制,第二列2进制)012
5、3456789ABCDEF0000000100100011010001010110011110001001101010111100110111101111例如:十六进制为9FD,那么在计算机中二进制表示100111111101(9=1001,F=1111,D=1101)1.3逻辑运算①逻辑“与”运算,用“”表示真值表表示为pq111100010000二进制按位逻辑“与”运算,即逐位进行逻辑“与”运算,并将逐位逻辑运算的结果进行组合得到的结果.例如①:如果,,那么例如②:如果,,那么首先把转换为二进制为;其次把转换而二进制位;最后按位进行逻辑“与”运算结果为①逻
6、辑“或”运算,用“
7、”表示真值表表示为:pq
8、111101011000②逻辑“异或”运算,用“”表示真值表表示为:pq110101011000③逻辑“取反”运算二进制数的所有0改为,1改为0,这个过程叫“取反”例如:如果,那么1.4模运算基本概念给定一个正整数,任意一个整数,一定存在等式 ;其中是整数,且 ,称为除以的商,为除以的余数.对于正整数和整数,定义如下运算: 模加法:,其结果是算术和除以的余数,也就是说,,则例如:,,那么(注这里“+”是模加法运算)首先将转换为二进制为;其次将转换为二进制为然后逐位相加结果为2211111112101121202
9、1021102121110因为实行的是二进制数据,逢2向前一位进1,所以最终结果为:111000000001100100110001111001110,这个结果的十进制是:,然后模,结果为,它的二进制表示为:110000000011001001100011110011102.MD5加密算法的原理简单的说,MD5加密以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过一系列的处理后,算法的输出有4个32位分组组成,将这4个32位分组级联后将生成一个128位散列值.第一步:消息的填充如果输入的消息的长度(以bit位单位)对512求余的结果不
10、等于448,就需要填充使得对512求余
此文档下载收益归作者所有