原文在 http://weibo.com/1619185424/C3fQkvyfH?type=comment
下载地址 http://pan.baidu.com/s/1kTpAUNl#path=%252Fmd5.%25E7%25A2%25B0%25E6%2592%259E
我这比较的md5也确实是一样的
MacBook-Pro:md5 virusdefender$ md5 plane.jpg
MD5 (plane.jpg) = 253dd04e87492e4fc3471de5e776bc3d
MacBook-Pro:md5 virusdefender$ md5 ship.jpg
MD5 (ship.jpg) = 253dd04e87492e4fc3471de5e776bc3d
但是sha1不一样
MacBook-Pro:md5 virusdefender$ openssl sha1 ship.jpg
SHA1(ship.jpg)= 9639db1fbadfcfbd4025a9b95d10b7799f65fcfb
MacBook-Pro:md5 virusdefender$ openssl sha1 plane.jpg
SHA1(plane.jpg)= 780973c1c165e76de3f10e1771db31cf9362d1f5
1
Luzifer 2015-02-08 13:26:13 +08:00 1
有意思,怎么做到的? |
2
DennyDai 2015-02-08 13:28:10 +08:00 1
md5的算法本来就是有可能重复的。。。虽然几率很小吧。。。
所以才一般都用MD5+sha1.。。让几率更小 |
3
virusdefender OP |
4
paw 2015-02-08 13:31:28 +08:00 2
http://www.win.tue.nl/hashclash/
chosen-prefix collisions方法构造碰撞的 |
5
greatdk 2015-02-08 13:32:42 +08:00 1
6=3+3
6=2+4 |
6
Luzifer 2015-02-08 13:32:54 +08:00
|
7
Draplater 2015-02-08 13:43:34 +08:00 via Android
应该是主动碰撞的
|
8
Delbert 2015-02-08 13:50:41 +08:00
尽管推荐用sha1()来进行数据散列算法,但另一种算法MD5也很流行。MD是消息摘要“Message Digest”的缩写。md5()产生数据散列的方式同sha1()相同,只是md5()返回的结果只有32个字节。因为sha1()的位数更长,所以相对来说不容易发生“碰撞”——一种两个不同的字符串得到同样的哈希值的情况。
http://php.code.kekou.de/Functions/Playing_with_strings/alternative_data_hashing.html |
9
lsmgeb89 2015-02-08 13:54:44 +08:00
这个不是好几年前就有了吗?是中国的一位女密码学家的成果。
|
10
buerwei 2015-02-08 15:12:48 +08:00
头像~~~嘘~
|
11
est 2015-02-08 16:02:39 +08:00
LZ你搞一个去掉EXIF和任何附加metadata或者尾部无用字节的 jpeg ,内容不同,md5一样,就算你厉害。
|
12
h4rdy 2015-02-08 16:11:39 +08:00
fastcoll.exe就能做到
|
13
kimmykuang 2015-02-08 16:46:48 +08:00
MD5碰撞吧,好像是一个中国的女学者首先证实的
|
14
shyangs 2015-02-08 17:23:59 +08:00
百度网盘的秒传是用MD5,分别传这两张上去实验看看 ฅ'ω'ฅ
|
16
DingSoung 2015-02-08 18:20:48 +08:00
生成两个内容不同,但是MD5,听说过,牛
|
17
poporange630 2015-02-08 18:40:26 +08:00 via Android
这么说吧 MD5就那长 但数据却是无穷无尽的 所以总会出现多种数据对应一个MD5的情况 这是很自然的
|
18
love 2015-02-08 18:52:03 +08:00
@poporange630 你知道md5是16字节吗?即使宇宙每个原子都对应一个md5都不会重复。
|
21
yfdyh000 2015-02-08 19:19:31 +08:00
@love IPv6地址和MD5输出都是128bit,IPv6地址只是地球每粒沙子的级别,MD5不可能做到宇宙所有原子的级别吧。而且SHA1的输出是160bit、SHA256/512更长,如果MD5已经那么大了,没必要再加长了吧。
|
23
love 2015-02-08 19:38:34 +08:00
@msg7086 我是说理论上会重复,实际上可以认为不会,至少不用但心随机碰撞。按wikipedia的说法32个字节就可以对应宇宙中所有原子。
|
27
Tink 2015-02-08 20:16:16 +08:00
撞了
|
28
love 2015-02-08 20:20:48 +08:00
|
29
yfdyh000 2015-02-08 20:25:17 +08:00
@love 哪句,没看到。建议看看 http://zh.wikipedia.org/wiki/数量级_(数据) ,两者差得很远。
|
31
Slienc7 2015-02-08 20:40:40 +08:00
@love 32位md5可存儲信息量: 16^32=2^128 近似 10^38
全球儲水量:1386×10^7亿立方米 近似 10^10億立方米 即億噸 即 10^18 噸 即10^(18+6)g 即10^24g 不管氧原子,衹算氫原子:10^24 g *1/9 約爲 10^23g 約爲 10^23 mol 10^23 * NA 約爲 6*10^46個 約爲 10^46 個 |
32
Slienc7 2015-02-08 20:42:04 +08:00
一算才發現確實很大,不過還差的遠~
|
34
loading 2015-02-08 20:52:14 +08:00
样子不同,年龄相同的两个人。(年龄就是摘要)
|
36
yfdyh000 2015-02-08 21:05:38 +08:00
@love 你这算的是32位字节最多能存储的数据量。上面说过了,MD5的输出是128bit,32个字节是转换后的十六进制数列。128bit/8=16字节。PS: 原来真的是16字节,20楼我说错了。
@xgowex http://zh.wikipedia.org/wiki/数量级_(数据) 写的“128 bits (16 bytes)”是2^7。 |
37
ETiV 2015-02-08 21:16:46 +08:00
仨球放俩抽屉里, 在不切割球的前提下, 必然有一个抽屉有俩球.
|
38
jiangrongyong 2015-02-08 21:29:36 +08:00 1
|
39
BGLL 2015-02-08 22:33:11 +08:00
@love
128位MD5 = 2^128 = 3.4 ×10^38 个地址 1摩尔 = 6.02×10^23 (3.4 ×10^38)/(6.02×10^23) = 5.6x10^14 摩尔 按25度下的水来算 =5.6x10^14 /18 = 3.1 x 10^13 克 = 3.1x10^7 吨 = 3千万吨水 一条128位MD5 = 3千万吨水原子 忽略温度,2010年全国总用水量6022.0亿吨 |
41
typcn 2015-02-08 22:52:54 +08:00
有程序可以一键碰撞 MD5
|
43
yeluozhiqiu1981 2015-02-08 23:08:21 +08:00
@jiangrongyong plane那张根本传不上去好吧,怎么传都显示的是ship 的图片
|
44
Luzifer 2015-02-08 23:22:51 +08:00
|
45
sennes 2015-02-08 23:24:37 +08:00 1
刚刚把两张图解压出来之后想放到印象笔记里面
发现两张图变一模一样了=,= 取决于你先丟哪张进去。有意思。 |
46
abelyao 2015-02-08 23:42:03 +08:00
|
49
msg7086 2015-02-09 01:15:59 +08:00
@abelyao 所有的哈希算法都会撞。平时用的hashtable啥的,hash key天天撞年年撞,也没见大家都把hashtable删了自己实现啊?
|
50
Agromania 2015-02-09 01:32:28 +08:00
@love 差的太远了吧,无限到有限,理论上来说是一定会碰撞的,学过数学的极限的话应该知道
有限 / 无限 = 0 如果你把宇宙中所有原子md5,其状况是几乎一直在碰撞:因为早就塞满了。 简单算一下,32位的MD5有16^32个值,也就是3.4028236692094 * 10^38 太阳的质量是1.989×10^30 千克,其中71.3%是氢 一个氢原子的质量约为1.66×10^-27 千克 所以仅仅是太阳就有1.1981927710843 * 10^57 个氢原子,如果把这样氢原子散列在MD5的空间里, 那么平均每个md5值上需要塞 3.5211720840144 * 10^18 个氢原子。也就是说,没有碰撞的概率可以忽略不计。 小伙子,请对宇宙有敬畏之心。 |
51
Agromania 2015-02-09 01:33:37 +08:00
抱歉,我忘记乘以71.3%了,不过,你懂的……
|
52
canautumn 2015-02-09 02:20:19 +08:00
以前有一次用qq邮箱发超大附件,别人接收到的是另一个不知道是谁的压缩包,里边都是限制级的图。试了好多次都这样。
|
53
xieyudi1990 2015-02-09 04:43:51 +08:00
@jiangrongyong 收集新出A片的MD5, 然后弄一堆同MD5的葫芦娃抢先上传, 2333
|
54
garipan 2015-02-09 05:32:15 +08:00
碰撞
|
55
a2z 2015-02-09 07:24:18 +08:00 1
|
57
b821025551b 2015-02-09 09:55:02 +08:00
王小云那个碰撞啊,但是碰撞了之后出来的应该是个打不开的文件,而这个文件居然很完整?!
|
58
jesonyang 2015-02-09 10:45:54 +08:00
一堆科学家开始在这里计算了!
|
59
xunyu 2015-02-09 11:24:55 +08:00
有意思,这样的话可以用这个方式替换掉别人云上的文件了
|
61
tomheng 2015-02-09 14:57:05 +08:00
大小也一样,我很好奇这是构造的还是巧合?
|
62
ryd994 2015-02-09 16:18:14 +08:00
@b821025551b jpg是允许结尾拼接无关数据的。所谓”图种“就是这么来的
|
64
b821025551b 2015-02-09 18:08:12 +08:00
@ryd994 但是md5是散列的啊!!像图种那样拼接在结尾是不能实现md5一样呀
|
65
itfanr 2015-02-09 19:10:59 +08:00
有意思
|
66
qq446015875 2015-02-09 22:00:26 +08:00
@kkhaike HashTab
|
67
qq446015875 2015-02-09 22:01:12 +08:00
|
68
Cu635 2015-02-09 22:15:18 +08:00
|
69
ryd994 2015-02-10 01:25:13 +08:00
|
70
ryd994 2015-02-10 04:35:10 +08:00
@b821025551b 举个例子,微软所有的iso,crc都是FFFFFFFF,就是通过补32位的数据做到的。
当然CRC不抗人为攻击,做起来要简单点,MD5是散列,做起来麻烦点而已。 |
71
FENICE 2015-02-10 07:53:13 +08:00 via Android
涨姿势了!
|
72
l00t 2020-01-02 09:11:49 +08:00
有人能当场做个图么?
|