首页 > 作文

md5碰撞

更新时间:2023-03-22 07:29:13 阅读: 评论:0

红叶谷景区-水库钓鱼技巧

md5碰撞
2023年3月22日发(作者:六年级混合运算)

哈希加密算法

加密算法的分类

1讲党课简报 .对称加密

采⽤对称秘钥的加密系统,加密、解密过程均采⽤同⼀把秘钥,通信双⽅必须同时获得这把钥匙进⾏加密解密操作。

常见对称加密:DES,3DES,AES

2.⾮对称加密

⾮对称加密系统采⽤的加密解密秘钥是不同的,加密的称为公钥,解密的称为私钥。公钥加密私钥解密、私钥签名公钥验证。

常见的⾮对称算法:RSA,DSA,ECC

3.哈希函数加密算法

⽆需借助任何秘钥,Hash算法严格上来说并不属于加密算法,⽽是与加密算法属于并列关系的⼀种算法。概括来说,哈希(Hash)是古代美女图片 将⽬标

⽂本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),⽽加密(Encrypt)是将⽬标⽂本转换成具有不同长度的、可逆的密

⽂。

常见的哈希加密算法:MD5,SHA-1,SHA-2

哈希函数特点

1.单向不可逆

哈希算法是⼀种单向密码体制,即只有加密过程,没有解密过程,很难通过结果推算出输⼊值,⽽对称和⾮对称加密算法都是通过秘钥反向推导密

码原⽂。

2.可重复性

相同输⼊经过同⼀哈希函数得到相同散列值,但并⾮散列值相同则输⼊结果相同。

3.抗冲突性

不同的输⼊痰多是什么原因引起的 数据,经过同⼀散列函数,产⽣的散列值不相同,相同则产⽣哈希冲突,。对儿童画画涂色 原始信息的任何⼀点改变都会导致结果的哈希值巨⼤

的不同。举个例⼦,假如原始数据是⼏百万字的⽂章,你在其中哪怕改动⼀个标点,计算出的哈希值都会有很⼤的变化。

4.输出长度固量筒的使用 定

⽆论输⼊的源数据的长度是多少,同⼀种Hash算法转换后结果的长度都相同,⽽加密转换后结果的长度⼀般与源数据的长度正相关。MD5的

返回值总是128bit,SHA-1的返回值是160bit,都是固定长度,MD5如果按⼗六进制表⽰的话是32位⼗六进制的数,SHA-1是40位⼗六进

制的数。

MD5

MD5即Message-DigestAlgorithm5(信息摘要算法5),是计算机⼴泛使⽤的散列算法之⼀。经MD2、MD3和MD4发展⽽来,诞⽣于20世

纪90年代初。⽤于确保信息传输完整⼀致。虽然已被破解,但仍然具有较好的安全性,加之可以免费使⽤,所以仍⼴泛运⽤于数字签名、⽂件完

整性验证以及⼝令加密等领域。

算法原理:

1.数据填充

对消息进⾏数据填充,使消息的长度对512取模得448,设消息长度为X,即满⾜Xmod512=448。根据此公式得出需要填充的数据长度。

填充⽅法:在消息后⾯进⾏填充,填充第⼀位为1,其余为0。

2.添加消息长度

在第⼀步结果之后再填充上原消息的长度,可⽤来进⾏的存储长度为64位。如果消息长度⼤于264,则只使⽤其低64位的值,即(消息长度

对264取模)。在此步骤进⾏完毕后,最终消息长度就是512的整数倍。

3.数据处理

准备需要⽤到的数据:

4个常数:A=0x67452301,B=0x0EFCDAB89,C=0x98BADCFE,D=0x10325476;

4个函数: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));

把消息分以512位为⼀分组进⾏处理,每⼀个分组进⾏4轮变换,以上⾯所说4个常数为起始变量进⾏计算,重新输出4个变量,以这4个变量再

进⾏下⼀分组的运算,如果已经是最后⼀个分组,则这4个变量为最后的结果,即MD5值。

哈希冲突(碰撞)

散列算法得到的结果位数是有限的,⽐如MD5算法计算出的结果字长为128位,意味着只要我们穷举2^128次,就肯定能得到⼀组碰撞,下⾯让

我们来看看⼀个真实的碰撞案例。我们之所以说MD5过时,是因为它在某些时候已经很难表现出散列算法的某些优势——⽐如在应对⽂件的微⼩

修改时,散列算法得到的指纹结果应当有显著的不同,⽽下⾯的程序说明了MD5并不能实现这⼀点。

importhashlib

#两段HEX字节串,注意它们有细微差别

a=x("0e306561559aa787d00bc6f70bbdfe3404cf03659e704f8534c00ffb659c4c8740cc942feb2da115a3f4155cbb86d7d1f34a42059d78f5a

b=x("0e306561559aa787d00bc6f70bbdfe3404cf03659e744f8534c00ffb659c4c8740cc942feb2da115a3f415dcbb86d7d1f34a42059d78f5a

#输出MD5,它们的结果⼀致

print(5(a).hexdigest())

print(5(b).hexdigest())

###a和b输出结果都为:

cee9a457e790cf20d4bdaa6d69f01e41

cee9a457e790cf20d4bdaa6d69f01e41

⽽诸如此类的碰撞案例还有很多,上⾯只是原始⽂件相对较⼩的⼀个例⼦。事实上现在我们⽤智能⼿机只要数秒就能找到MD5的⼀个碰撞案例,

因此,MD5在数年前就已经不被推荐作为应⽤中的散列算法⽅案,取代它的是SHA家族算法,也就是安全散列算法(SecureHash

Algorithm,缩写为SHA)。

SHA

SHA实际包括有⼀系列算法,分别是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。⽽我们所说的SHA2实际是对后⾯4中的统称。

各种SHA算法的数据⽐较如下表,其中的长度单位均为位:

MD5和SHA1,它们都有4个逻辑函数,⽽在SHA2的⼀系列算法中都采⽤了6个逻辑函数。

以SHA-1为例,算法包括有如下的处理过程:

1.对输⼊信息进⾏处理及填充长度信息

和MD5处理输⼊⽅式相同

2.信息分组处理

经过添加位数处理的明⽂,其长度正好为512位的整数倍,然后按512位的长度进⾏分组,可以得到⼀定数量的明⽂分组,我们⽤Y,Y,……

Y表⽰这些明⽂分组。对于每⼀个明⽂分组,都要重复反复的处理,这些与MD5都是相同的。

⽽对于每个512位的明⽂分组,SHA1将其再分成16份更⼩的明⽂分组,称为⼦明⽂分组,每个⼦明⽂分组为32位,我们且使⽤M[t](t=0,1,

……15)来表⽰这16个⼦明⽂分组。然后需要将这16个⼦明⽂分组扩充到80个⼦明⽂分组,我们将其记为W[t](t=0,1,……79),扩充的具

体⽅法是:当0≤t≤15时,Wt=Mt;当16≤t≤79时,Wt=(W⊕W⊕W⊕W)<<<1,从⽽得到80个⼦明⽂分组。

3.初始化缓存

所谓初始化缓存就是为链接变量赋初值。前⾯我们实现MD5算法时,说过由于摘要是128位,以32位为印泥怎么洗掉 计算单位,所以需要4个链接变量。同样

SHA-1采⽤160位的信息摘要,也以32位为计算长度,就需要5个链接变量。我们记为A、B、C、D、E。其初始赋值分别为:A=

0x67452301、B=0xEFCDAB89、C=0x98BADCFE、D=0x10325476、E=0xC3D2E1F0。

如果我们对⽐前⾯说过的MD5算法就会发现,前4个链接变量的初始值是⼀样的,因为它们本来就是同源的。

4.计算信息摘要

经过前⾯的准备,接下来就是计算信息摘要了。SHA1有4轮运算众男争春 ,每⼀轮包括20个步骤,⼀共80步,最终产⽣160位的信息摘要,这160位的摘

要存放在5个32位的链接变量中。

在SHA1的4论运算中,虽然进⾏的就具体操作函数不同,但逻辑过程却是⼀致的。⾸先,定义5个变量,假设为H0、H1、H2、H3、H4,对其

分别进⾏如下操作:

(A)、将A左移5为与函数的结果求和,再与对应的⼦明⽂分组、E以及计算常数求和后的结果赋予H0。

(B)、将A的值赋予H1。

(C)、将B左移30位,并赋予H2。

(D)、将C的值赋予H3。

(E)、将D的值赋予H4。

(F)、最后将H0、H1、H2、H3、H4的值分别赋予A、B、C、D

这⼀过程表⽰如下:

⽽在4轮80步的计算中使⽤到的函数和固定常数如下表所⽰:

01

N-1

t-3t-8t-14t-16

经过4轮80步关于美景的作文 计算后得到的结果,再与各链接变量的初始值求和,就得到了我们最终的信息摘要剥削的读音 。⽽对于有多个明⽂分组的,则将前⾯所得到火锅汤底 的结

果作为初始值进⾏下⼀明⽂分组的计算,最终计算全部的明⽂分组就得到了最终的结果。

本文发布于:2023-03-22 07:29:12,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/cfcb2574e5ab43a4e60d66b6e23c1322.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:md5碰撞.doc

本文 PDF 下载地址:md5碰撞.pdf

下一篇:返回列表
标签:md5碰撞
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图