+ -
当前位置:首页 → 问答吧 → 关于md5加密是否真不重复的一点疑问,希望同各位指点一下

关于md5加密是否真不重复的一点疑问,希望同各位指点一下

时间:2009-05-09

来源:互联网



这里拿32的md5来说

md5加密后的字符串是32位的,而且说是不重复的,而且对被加密的字符串是没有限制的,然后我就有疑问了。

加密后的字符串32位的数字和字母的混合,相当于一个32位的36进制的数字吧。这个数字只有X种形式,X等于36的36次方。

现在我们来加密啊一个字符串Y,假设Y是一个32位的36进制的数字,那么它也有36的36次方种形式,根据一一对应关系,这样我们光加密Y便用光了X的所有形式,如果现在我们再加密一个31位的36进制的数字或者其他不是32位的数字,md5将如何加密才能保证加密后的形式不重复呢。

直观上想我认为是不可能做到的,除非md5对加密字符串的长度有限制。但是md5用的这么广肯定解决了这个问题。

我没有能力深入研究一下md5算法,希望高手们解答一下我的疑惑。

作者: cnan   发布时间: 2009-05-09

等杨小云大哥...........

作者: lxylxy888666   发布时间: 2009-05-09

杨小云大哥是谁?

第一次听所王小云的时候,我真没想到他竟然是一位女性!

作者: cnan   发布时间: 2009-05-09

md5加密抛弃了一些信息,存在碰撞问题

作者: iminto   发布时间: 2009-05-09

MD5是目前使用最普遍的方法,主要是对小型修改也能有一些判断。

但是,这种方法肯定有一个相同的明文,你想想,如果你有一台超级计算机和强大的存储器,在一定时间内,你是一定可以找到重复的md5的,从理论上说,也一定存在。

一般来说,md5已经可以基本确定不重复,目前没有数学级破解的方法,现在有的,最终都是穷举。

作者: cwk32   发布时间: 2009-05-09

首先是王小云,其次小云是女的-_-#
md5也是有重复率的,理论上也没理由不重复的。
在70亿数字内就有了,我记得有人测试过,如果你不确定也可以测试一下。

作者: SysTem128   发布时间: 2009-05-09

谷歌搜索 MD5碰撞实验

作者: fei   发布时间: 2009-05-09

32位的md5 可以表达得数字是 16得32次乘积。很明显是存在碰撞的。
那个女博士只是找到办法加快碰撞查找而已。

作者: 我要读书网   发布时间: 2009-05-10

从来没有人说过MD5不会重复.

作者: TankMe   发布时间: 2009-05-10

普通应用中得复的机率很小

作者: 小鱼哥哥   发布时间: 2009-05-11

从来没有人说过MD5不会重复.
TankMe 发表于 2009-5-10 17:16

作者: houlai   发布时间: 2009-05-11

除了坦克和我要读书网这俩人外,一群哈皮在讨论MD5。连MD5是啥子都不知道,讨论个屁!
MD5是散列,知道散列的性质和定义吗?
讨论MD5会不会重复就像讨论三角形内角和是不是180度一样的白痴和可笑。

作者: 那个故事   发布时间: 2010-04-06



何谓md5重复? 也即所说的碰撞,即不同的字符串进行md5加密后其结果一致。

在我们的工作中, 你无须考虑md5重复的问题。

36(小写字母与数字的组合)的32次方的结果大约是6.33402866629733e+049
是一个50位的结果集,这个结果集很大,因此从理论上来说,是可能重复的(即不同的字符串md5加密结果一致),但是考虑一下,你的应用是否需要如此高强度的加密?

综述:md5碰撞是存在的,但是不必考虑

作者: xuer   发布时间: 2010-04-06

弱智   威望 -5




绿霸花季护航
,弱智的是你

作者: 那个故事   发布时间: 2010-04-06

除了坦克和我要读书网这俩人外,一群哈皮在讨论MD5。连MD5是啥子都不知道,讨论个屁!
MD5是散列,知道散列 ...
那个故事 发表于 2010-4-6 11:23



你说“讨论MD5会不会重复就像讨论三角形内角和是不是180度一样的白痴和可笑。”。

如果你觉得三角形内角和是不是180度这样的问题很白痴很可笑,那我只能为你感到深深的遗憾。
三角形内角之和是不是180度可是曾让很多数学家深刻的反思过,当然你能看到的只是平面几何。
也许你曾经听说过球面几何、黎曼几何、罗巴切夫斯基,可是这些都已经被你的自以为是掩盖了。

MD5会不会有重复,这些都值得研究和探讨的。所有喜欢弄清事实本来面目的人都值得令人尊敬。
当然也许这方面你已经理解得很透彻了,可是你从来没有想过多少位之内的的MD5是没有重复的。
就这个问题也许你会对此不屑一顾,可是这对开发人员来说是很重要也是很关心的实际问题之一。

知识没有尽头,哪怕是最简单的问题也有研究意义和价值,希望“那个故事”能与大家一起反思。

作者: 602000   发布时间: 2010-04-07


你说“讨论MD5会不会重复就像讨论三角形内角和是不是180度一样的白痴和可笑。”。

如果你觉得三角 ...
602000 发表于 2010-4-7 21:05



    平面几何里面,三角形内角和就是一百八十度,球面几何大于一般八十度,地球仪上就可以看出来。
不要跟我讲数学,我就是玩数学的,你不一定讲得过我的。
MD5无疑是会重复的,这个稍微有一点点常识的人都应该知道。
(散列的五个性质,以及压缩函数f,由于他是个有损压缩函数,所以一定存在碰撞。)

简单的例子,就好比3.2 取整是3,3.45取整是3,取整就是一个有损压缩函数,这里就碰撞了。这是基本的哲学常识了。
当然更深层次的东西我也讲不清,高深的密码学,不是我就可以搞透的。“两王一肖”不是吃干饭的。
我倒是看到不少人啥都不懂,就听风是风,听雨是雨,
我敢说PPC上90%以上的人,都还老是把MD5喊做加密算法(这是很不严谨的)而不知道这其实是一个散列函数。
更不要说HASH,拉链了。你信不?我还是高估了。
说95%的人不知所以也毫不夸张。

真正需要反思的是那些不好好学习的,没有点思考头脑的人,而且在PPC里面是大多数。
我就奇怪了,有的人为什么有书就是不看呢?我当年为了弄懂那些东西,省下早饭钱去旧书摊上淘。
为什么不看书呢?剩下你上网的时间,够你买多少本书了?
为啥有的人就没有点追求,混日子,遇到问题没有一点主动性,不会查资料,不会买书看。

当然,我很佩服你的,你是位老程序员。但现在的程序员是一代不如一代了。许多人不配程序员这个称呼

作者: 那个故事   发布时间: 2010-04-07

何谓md5重复? 也即所说的碰撞,即不同的字符串进行md5加密后其结果一致。

在我们的工作中, 你无须考 ...
xuer 发表于 2010-4-6 12:36

你的结论是正确的,但推理过程是错误的。
你的推理有一个假设就是概率是平均分布的,这是错误的。

作者: 那个故事   发布时间: 2010-04-07

平面几何里面,三角形内角和就是一百八十度,球面几何大于一般八十度,地球仪上就可以看出来。
...
那个故事 发表于 2010-4-7 21:38



    很高兴与您探讨,你说的90%以上的人把MD5看成是加密函数,这个我表示赞同。
也许大多数初学者看了各种实例确实把MD5当成了加密函数,甚至有些人还经常问MD5的可逆函数。
其实这个正常,PHP已经成为大众化组装工具了,PHP的底层甚至算法都已经不重要了。
但我仍然要对包括楼主在内的那些一直在用MD5,但开始考虑和怀疑MD5重复值的问题的人表示赞赏。
赞赏的是怀疑、发现、思考、探讨的精神。当然作为像MD5这类已经成熟的理论方面,我和“那个故事”
都觉得应该有更直接的学习方法,那就是上网搜索其原理、算法、实现方式、特性等等。
那么做为过来人,对于为什么有90%甚至95%以上的PHPer对MD5的基本特性还不了解,这个也许是
值得我们深深的思考的。不用说算法了,其实很少人能了解MD5是英文信息摘要的缩写。
当然从乐观一点讲,PHPer的水平还是有梯度的,PHP还是有一定门槛的,
真正的PHP开发者工作还是无优的,薪水还是稳定的,竞争还是不怕的,前途还是光明的。

作者: 602000   发布时间: 2010-04-08

很高兴与您探讨,你说的90%以上的人把MD5看成是加密函数,这个我表示赞同。
也许大多数初学者看 ...
602000 发表于 2010-4-8 00:09



    大师风范

作者: 那个故事   发布时间: 2010-04-08

膜拜ls几位高人 学习ing

作者: TankMe   发布时间: 2010-04-08

理论上肯定存在碰撞的,不管什么加密方法,都是有一个时间跨度来限定的

作者: asptophp   发布时间: 2010-04-08

echo date('Y-m-d H:i:s',time()+9999*79999+3000*3600);
时间都没有办法到2040年,

echo strtotime('2038-01-01');
echo strtotime('2040-01-01');

你们讨论md5重复做什么?

作者: spser   发布时间: 2010-08-13