当前位置:首页 » 操作系统 » md5碰撞算法

md5碰撞算法

发布时间: 2022-08-09 07:12:19

Ⅰ 朋友老说哈希算法,请问到底什么是哈希算法

首先,一般哈希算法不是大学里数据结构课里那个HASH表的算法。一般哈希算法是密码学的基础,比较常用的有MD5和SHA,最重要的两条性质,就是不可逆和无冲突。
所谓不可逆,就是当你知道x的HASH值,无法求出x;
所谓无冲突,就是当你知道x,无法求出一个y, 使x与y的HASH值相同。

这两条性质在数学上都是不成立的。因为一个函数必然可逆,且由于HASH函数的值域有限,理论上会有无穷多个不同的原始值,它们的hash值都相同。MD5和SHA做到的,是求逆和求冲突在计算上不可能,也就是正向计算很容易,而反向计算即使穷尽人类所有的计算资源都做不到。

我觉得密码学的几个算法(HASH、对称加密、公私钥)是计算机科学领域最伟大的发明之一,它授予了弱小的个人在强权面前信息的安全(而且是绝对的安全)。举个例子,只要你一直使用https与国外站点通讯,并注意对方的公钥没有被篡改,G**W可以断开你的连接,但它永远不可能知道你们的传输内容是什么。

顺便说一下,王小云教授曾经成功制造出MD5的碰撞,即md5(a) = md5(b)。这样的碰撞只能随机生成,并不能根据一个已知的a求出b(即并没有破坏MD5的无冲突特性)。但这已经让他声名大噪了。

Ⅱ 山东大学的王小云真的研究出了MD5的逆向算法吗

MD5是不可能逆向的。王教授的碰撞法是利用了MD5或者SHA1算法的一个特性,根据MD5和SHA1等Hash算法的特点,因为他们是任意长度的字符串变成固定长度的摘要信息。那么这里就有可能发生一个问题,就是不同的字符串在理论上是有可能产生相同的摘要信息。王教授所谓的碰撞法,碰撞的就是不同的字符串所产生的摘要信息是一样的那些字符串。因此得名碰撞法。 碰撞就是体现在这里。没有什么其它的传神的东西了。根据SHA1和MD5等Hash算法,在设计时候,设计这个算法的人认为不同的字符串要产生相同结果的摘要信息的可能性几乎为零。而王教授则证明了SHA1和MD5等Hash算法产生的摘要信息规则是可以在比较短时间内被破解的。这样一来,原始数据的 Integrity 就被打破了。 所谓的破解,也就是体现在这里。至于破解工具,下面的地址提供一些免费的破解服务,能破解一些简单的密码,其实都是采用字典或暴力破解。 www.cmd5.com www.xmd5.org我有时去破解一些常用的密码,有一定的成功率

Ⅲ 如果把数字123用MD5加密,结果再加密,一直加密下去会怎么样拜托各位了 3Q

MD5是个散列算法,一定会有冲突的,只不过这个算法的实际上,让制造冲突需要花费足够的时间而已 这么看吧,MD5是一个将值域为无穷范围映射到一个值域为0~~2^128的范围,肯定会有冲突 补充: “安全的杂凑函数在设计时必须满足两个要求:其一是寻找两个输入得到相同的输出值在计算上是不可行的,这就是我们通常所说的抗碰撞的;其二是找一个输入,能得到给定的输出在计算上是不可行的,即不可从结果推导出它的初始状态。现在使用的重要计算机安全协议,如SSL,PGP都用杂凑函数来进行签名,一旦找到两个文件可以产生相同的压缩值,就可以伪造签名,给网络安全领域带来巨大隐患。 MD5就是这样一个在国内外有着广泛的应用的杂凑函数算法,它曾一度被认为是非常安全的。然而,王小云教授发现,可以很快的找到MD5的“碰撞”,就是两个文件可以产生相同的“指纹”。这意味着,当你在网络上使用电子签名签署一份合同后,还可能找到另外一份具有相同签名但内容迥异的合同,这样两份合同的真伪性便无从辨别。王小云教授的研究成果证实了利用MD5算法的碰撞可以严重威胁信息系统安全,这一发现使目前电子签名的法律效力和技术体系受到挑战。” 网上的一点资料,希望对你有帮助

Ⅳ 王晓云破解MD5到什么程度

“比如我一个定长的32个字符的字符串1(包括0~9,a~f共16个字母)形成的一个MD5的字符串2,能否通过这个字符串2准确的找到字符串1?”

这个不可能,MD5是消息摘要算法,只是“摘要”而已,理论上是不可逆的。

“再比如一个定长的33个字符的字符串1形成MD5字符串2,能否通过字符串2找到所有形成MD5字符串2的33个字符的字符串1。”

这个应该可以,只是可能的值非常多,多到可以认为“不可逆”。

其实,王晓云所谓的MD5破解并不是你说的那种由加密后的字符串可以反推回加密前的内容,而是“MD5碰撞”,就比如说字符串S1和S2不同但它们形成的MD5值却相同,即发生了“碰撞”。王晓云的研究成果是在知道S1的情况下,可以通过算法在一定的时间内找到S2 使S1和S2的MD5相同,说白了就是找“碰撞”。

我这里有外国的研究人员根据她的研究成果特意构造的发生“MD5碰撞”两个控制台程序,一个是不停地输出 Goodbye World :-( 另一个是只输出一个Hello World ;-)
但是这两个程序的MD5却一样。
现在的研究成果还不能使任意两个文件的MD5值一样。但是既然可以人为地构造碰撞就说明MD5算法已经不再适合做文件的数字签名,验证文件的完整性了。

所以,王晓云对MD5算法的破解是发现MD5可以发生“碰撞”并给出寻找这种碰撞的方法,但是MD5算法本身依然是不可逆的,仍然可以用来加密。

////////////////////////////////////////////////////
补充:
“根据MD5值能找到和原字符S1相同MD5的S2,这个S2是随机找到的?还是有什么规律呢?如果我想找到一定条件的S2这可能吗? 比如我就想找到某MD5的S2是一个开头5个字符是A1234的字符串,这可能吗?(当然是在短期内找到,而不是穷举)。”
不是穷举随机找到的,而是用一套碰撞搜索算法,利用这套算法可以在一定时间内找到碰撞,但是搜素到的结果是不可预期的,也就是说在找到前很难预言S2会是什么,更不要说满足一定的条件了。

希望对您能有所帮助~~~

P.S.:还有,是buaa_dep6,不是bubba,呵呵^_^

Ⅳ MD5算法被碰撞的概率有多大

恶意攻击的话,很大。我记得前段时间,国外已经有程序可以实现文件的MD5值碰撞成功的,几分钟。

Ⅵ 关于MD5加密算法密码验证问题

(恰恰我最近也在研究加密这块,

我们公司项目的RSA ASE MD5 SHA-1加密方案都是我写的。

直接拿我分享会上的稿子了)

先回答你的问题:

你的担心是正确的,

MD5加密的结果值A,是可以由两个不同的内容B和C得到的

即:期望的正确密码 a a进行MD5加密的结果

某人输入了错误的密码x,

x进行特殊的算法处理,是可以得到 这个MD5值的

————

但是你注意一点,错误的密码数据,必须是通过复杂算法得到,简单点称作“碰撞算法”。碰撞算法,其实可以看作是一种伪装算法,即,把错误的东西伪装成某个正确东西的MD5值。

至于“碰撞算法”的原理,可以从MD5加密的原理探知1、2,

MD5加密的过程有四步骤:

  1. 填充 2.初始化变量3. 处理分组数据 4.输出结果

“碰撞算法”原理就是在前三步进行“大数据量样本的填充-试错-填充试错-直至得到期望的结果

破解过程中有三点是必须清晰的;

1.大量的正确密码的样本

2.采用碰撞算法

3.事先预知的,破解者期望的正确的结果

三者缺一不可

MD5“碰撞算法”的示例场景也是在 文件(比如数字签名)摘要加密上,

即,像密码学家演示的那样:

通过算法,可以得到相同MD5值的A和B (A和B只是代指),这种算法2004年已经由中国的密码学家王小云实现。

但是回到题主担心的,

非法分子,事先并不知道 张无忌的账号——正确密码对应的MD5值,

他只能用“碰撞算法”去试,随便编一个假的密码,用“碰撞算法”去进行伪装填充-试错

但是试的过程就是无数次跟贵公司后台校验的过程,

在这个过程,贵公司后台应该做了用户当日最大错误密码次数处理。

所以理论上,不存在一个人,输入了错误的密码,登录成功的情况。

假设这个人每天能试5次,使用“碰撞算法”估计要算好几辈子了。

——

但是强调一下“MD5碰撞算法”的应用前提:

  1. 已知的明文以及明文对应的MD5值

  2. 根据1的条件,算法可以伪装出 另一个明文以及相同的MD5值

所以,不存在偶尔输错了一个密码,使用MD5加密,凑巧得到了正确密码的MD5值,这种情况不满足“碰撞算法”的条件和前提。

根本不可能。

安全性总结:

对于文件来说碰撞可能容易,但是对于限定长度的密码或者密文来说,MD5作为一种高性能高安全的数字签名算法来说,还是非常实用的

——

综上 MD5碰撞几个关注点

  1. 多数情况下,会产生不可视字符,而密码不可能存在不可视字符的.

  2. 生成"碰撞"的字符,能和你密码本身长度相等的.基本不可能.


基于上面两点.只要稍作点文章.就可以防止MD5碰撞了.

1.密码进行多次MD5加密
2.密码过滤不过视字符.
3.密码是定长的.例如:32个字符.用户不够的字符,用一固定字符如:空格补充.超长的.一律非法.

————

参考文章

【1】中国密码学家王小云2004年提交的破解MD5的算法

【2】碰撞算法原理分析

【3】产生MD5碰撞的新的充分条件集

【4】MD5碰撞

Ⅶ 什么是MD5

MD5是一种散列算法(Hash function),又称为哈希算法、消息摘要算法,它的作用是获取数字信息的特征(我们有时称之为“信息指纹)。一个任意长度的任意数字信息,通过散列算法运算后,会产生一串固定长度(比如160bit)的数字信息,称为散列值(或哈希值、消息摘要)。安全的散列算法有这样的特点:

⑴ 两个不同数字信息产生同样的 散列值的概率是非常小的(小到现实中几乎无法发生);

⑵ 仅从散列值无法演推出原信息;

⑶ 原信息的微小改变,哪怕只改变一位(bit),将导致散列值的很大变化。

数字签名要使用散列值。MD5是一种常用散列算法,另外目前常用的散列算法还有SHA-1。两个不同的数字信息产生相同的散列值就是人们所说的“散列值碰撞“。散列算法是一个将无穷维空间的信息映射到有限维空间的变换,学过数学的人都知道这不是一个一一对应的变换。实际上一个散列值可能对应有无穷多个数字信息,换言之,会有无穷多个数字信息产生同样一个散列值。这点是研究密码的人众所周知的,而不像有些媒体所说的那样,散列值是唯一的。

你可以自己尝试MD5在线生成工具:http://www.okman.cn/tools/md5.htm
比如:数字1,它对应的MD5_32A的值为:

Ⅷ 求MD5碰撞算法,请说明一下在短时间内找到MD5碰撞的算法

晕。。你的问题怎么会到我的推荐里面来?网络太恶心了,记录我的搜索

Ⅸ md5碰撞是什么意思

md5简单说是文件的指纹识别; 不同文件的md5码是不一样的;也有人研究这个算法的,找到两个不同文件但是md5一样的,这就是md5碰撞,几率很小。这是个不可逆算法

Ⅹ MD5是什么类型的(如:对称性或非对称性)

MD5是非对称性的计算机杂凑算法之一。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

热点内容
nagios自定义脚本 发布:2025-01-16 08:09:52 浏览:364
安卓为什么下不了方舟生存进化 发布:2025-01-16 08:02:32 浏览:194
如何登录男朋友的微信密码 发布:2025-01-16 07:41:14 浏览:194
宝骏解压流程 发布:2025-01-16 07:35:35 浏览:2
两匹压缩机多少钱 发布:2025-01-16 07:29:19 浏览:635
个人pc搭建游戏服务器 发布:2025-01-16 07:27:09 浏览:970
存储剩余照片 发布:2025-01-16 07:25:01 浏览:50
ftp解除限制上传文件个数 发布:2025-01-16 07:16:26 浏览:348
梯度下降法python 发布:2025-01-16 07:10:43 浏览:520
加载并编译着色器apex 发布:2025-01-16 07:00:08 浏览:59