社区
其它技术问题
帖子详情
所有的字符串生成的MD5值是唯一的吗
chenyugang1988
2010-02-03 12:02:02
我一直没搞明白这个问题
网络上很多人都说所有的字符串生成的MD5值是唯一的,但是我还是不相信,原因如下:
任何字符串 str MD5后都得到一个定长的字符串 mdstr(32个字节) 但是str的长度却是没限制的
mdstr 是有限个16进制位组成的,所能代表所有字符串的可能只有16的32次方(如果是32位) 而原来字符串的长度和内容是没限制的 也就是说问题在于 16^32组字符串 是怎么和无穷组字符串一一对应起来的
...全文
4115
11
打赏
收藏
所有的字符串生成的MD5值是唯一的吗
我一直没搞明白这个问题 网络上很多人都说所有的字符串生成的MD5值是唯一的,但是我还是不相信,原因如下: 任何字符串 str MD5后都得到一个定长的字符串 mdstr(32个字节) 但是str的长度却是没限制的 mdstr 是有限个16进制位组成的,所能代表所有字符串的可能只有16的32次方(如果是32位) 而原来字符串的长度和内容是没限制的 也就是说问题在于 16^32组字符串 是怎么和无穷组字符串一一对应起来的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
和指纹类似:这个世界上肯定有两个人的食指的指纹几乎一模一样(指用肉眼分辨),但找出这两个人是谁和谁很难。
珍惜生命远离CPP
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值也就是对应的“数字指纹”都会发生变化。“ 百度百科中的。
将
MD5
值
压缩成8位32进制
生成
8位长度的
唯一
英文数字组合
字符串
function str16to32($a){ for($a =
md5
( $a, true ), $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV', $d = '', $f = 0; $f < 8; $g = ord( $a[ $f ] ), ...
java
生成
随机数,
生成
唯一
hash
值
目录 java.util.Random.RandomStringUtils 常用方法: 可以使用该工具类
生成
唯一
密钥 java.util.Random.RandomStringUtils 有如下方法: 常用方法: /** * count 指定创建一个随机串的长度 * letters true表示
生成
的
字符串
可以包括字母字符 * numbers true表示
生成
的
字符串
可以包含数字字符 */public static String random(int count...
MD5
16位 加密
字符串
标准算法
首先先了解
md5
加密算法的原理,太高深太专业的说法,我不会,就算会说了也可能大家不明白 原理:将存储
字符串
的bit(1byte = 8bit)顺序打乱,然后重组,抽取32位byte,每2个再进行组合,形成16组byte[]数组,然后在依次转化为16进制。 这就是16位的
MD5
加密算法,具体算法如下: public static String get
MD5
(byte[] sou...
将
md5
压缩成8位32进制
生成
8位长度的
唯一
英文数字组合
字符串
/*将32位16进制压缩成8位32进制
生成
8位长度的
唯一
英文数字组合
字符串
*//*将32位16进制压缩成8位32进制
生成
8位长度的
唯一
英文数字组合
字符串
*/ function only_one($a){ for($a =
md5
( $a, true ), $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV', $d = '', $f = 0; $f <
MD5
加密
public class
Md5
FileNameGenerator { private static final String HASH_ALGORITHM = "
MD5
"; private static final int RADIX = 10 + 26; // 10 digits + 26 letters @Override public String generat
其它技术问题
3,881
社区成员
9,044
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章