所有的字符串生成的MD5值是唯一的吗

chenyugang1988 2010-02-03 12:02:02
我一直没搞明白这个问题
网络上很多人都说所有的字符串生成的MD5值是唯一的,但是我还是不相信,原因如下:
任何字符串 str MD5后都得到一个定长的字符串 mdstr(32个字节) 但是str的长度却是没限制的
mdstr 是有限个16进制位组成的,所能代表所有字符串的可能只有16的32次方(如果是32位) 而原来字符串的长度和内容是没限制的 也就是说问题在于 16^32组字符串 是怎么和无穷组字符串一一对应起来的
...全文
4115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyugang1988 2010-04-16
  • 打赏
  • 举报
回复
谢谢大家回复
liutengdas 2010-03-17
  • 打赏
  • 举报
回复
两个字符串的MD5值一样的概率非常非常低。
febbird1984 2010-02-04
  • 打赏
  • 举报
回复
楼主可以看下算法导论中的散列表(哈希表)部分
forster 2010-02-03
  • 打赏
  • 举报
回复
md5算法保证
根据md5找生成他的 字符串 集 的 复杂度=穷举
lqbk1 2010-02-03
  • 打赏
  • 举报
回复
所有字符串生成的md5值是唯一的,这话没错……
但是同一个md5值,可能由不同的字符串产生……

字符串->md5值
这是一个满射,但不是单射……
mLee79 2010-02-03
  • 打赏
  • 举报
回复
显然不是...
ladliu 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 akirya 的回复:]
引用楼主 chenyugang1988 的回复:
我一直没搞明白这个问题
网络上很多人都说所有的字符串生成的MD5值是唯一的,但是我还是不相信,原因如下:
任何字符串 str MD5后都得到一个定长的字符串 mdstr(32个字节) 但是str的长度却是没限制的
mdstr 是有限个16进制位组成的,所能代表所有字符串的可能只有16的32次方(如果是32位) 而原来字符串的长度和内容是没限制的 也就是说问题在于 16^32组字符串 是怎么和无穷组字符串一一对应起来的

不唯一,只是重复的概率很低很低,近似认为唯一。
[/Quote]
应该看看哈希表的算法的书籍~~~,看了也会很头疼~~~
总的来说同意这位仁兄的说法
赵4老师 2010-02-03
  • 打赏
  • 举报
回复
和指纹类似:这个世界上肯定有两个人的食指的指纹几乎一模一样(指用肉眼分辨),但找出这两个人是谁和谁很难。
  • 打赏
  • 举报
回复
[Quote=引用楼主 chenyugang1988 的回复:]
我一直没搞明白这个问题
网络上很多人都说所有的字符串生成的MD5值是唯一的,但是我还是不相信,原因如下:
任何字符串 str MD5后都得到一个定长的字符串 mdstr(32个字节) 但是str的长度却是没限制的
mdstr 是有限个16进制位组成的,所能代表所有字符串的可能只有16的32次方(如果是32位) 而原来字符串的长度和内容是没限制的 也就是说问题在于 16^32组字符串 是怎么和无穷组字符串一一对应起来的
[/Quote]
不唯一,只是重复的概率很低很低,近似认为唯一。
lqbk1 2010-02-03
  • 打赏
  • 举报
回复
MD5只是碰撞率低……
不是独一无二……
chenyugang1988 2010-02-03
  • 打赏
  • 举报
回复 1
“大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。“ 百度百科中的。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧