1
makdon 2019-05-28 15:45:45 +08:00 3
但是你怎么样证明你这个校验码足够唯一?假如有两个文件:
A 的 md5:1123----6677 B 的 md5:1134----5577 A 的 SHA1:aabb----yyzz B 的 SHA1:aacc----xxzz 那得到的结果都是 1177aazz 这只是个例子,的确 md5 和 sha 都有可能发生两个不同内容出来的值相同,但是你怎么证明你的这个想法中,产生冲突的可能性足够小可以用于实际应用。 |
2
t123yh 2019-05-28 15:51:04 +08:00 via Android
MD5 和 SHA1 在发明的时候,因为用的人比较少,都是没有碰撞方法的。后来用的人多了,才有人研究它们的碰撞方法。
你的算法,因为没人用,所以没人研究碰撞方法;但并不代表它是安全的。 |
3
boris1993 2019-05-28 15:53:29 +08:00 via Android
emmmm.......这个好像得靠数学证明的吧.......
|
4
xenme 2019-05-28 15:54:15 +08:00
现在已经有方法对完整的 md5 和 sha1 进行碰撞攻击,只是代价太高,你这只取前后两位立马把难度降低了不知道多少数量级
|
5
Mohanson 2019-05-28 16:01:23 +08:00 via Android
现在部分正规下载站,会同时给出 md5 与 sha256. 搞笑的地方在于 256 的 8 次方…嗯嗯嗯,我用笔记本都能给你碰出来。 敲黑板:md5 是 16 个 byte, sha256 是 32 个 byte。md5 用正确算法碰撞在我电脑上不需要一分钟,你的这个算法,暴力遍历就可以了…
|
6
Ultraman 2019-05-28 16:04:58 +08:00 via Android
为啥不直接把俩拼接起来…
|
7
mcone 2019-05-28 16:07:10 +08:00
对,是找抽,虽然我读书不多,对哈希碰撞可以说是门都没双脚进入;但是我建议楼主多读读书,你真的是想的太多了……
才 8 字节就想“发明”,小学的抽屉原理还记得吗,理论上讲这几乎是送分题…… |
8
azh7138m 2019-05-28 17:26:43 +08:00
儿童劫
|
9
mooncakejs 2019-05-28 17:47:39 +08:00
#1 给出的你都解决不了,md5 的前 2 位 != md5
|
10
xiri 2019-05-28 18:07:11 +08:00
正文内容很符合楼主的标题,“庆 61 ”(:手动狗头
|
11
AlisaDestiny 2019-05-28 18:30:28 +08:00
你这字节数算的不对吧。
一个 hexadecimal digit 是 4bit. 11-22-33-44 是 32bit 等于 4 字节。 而且你这个相当于对数字 1 到( 2^32+1 )求哈希值就有必定会有碰撞,还不如 MD5。 |
12
sobigfish 2019-05-28 18:33:21 +08:00
你这相当于把两个自行车拼一起,看~我发明了汽车
|
13
liuzhiyong 2019-05-28 21:19:29 +08:00
哥们,你这样搞肯定不行。“ 8 个字节”太离谱。
|
14
eslizn 2019-05-28 21:25:10 +08:00
摘要算法的核心是什么?
|
15
si 2019-05-28 21:32:55 +08:00 1
数据是无限的,hash 是有限的。
用有限的 hash 映射无限的数据,必定会有重复的。 hash 越短、碰撞几率越多。 |
16
Windelight 2019-05-28 21:50:31 +08:00 via Android
你这一共 8 个,或者 12 个,也就是 36 的多少次方,最多也就是大约
4738000000000000000 个情况,然后这个实际上碰撞可能性更大 不过 61 快乐,毕竟 20 个小朋友加一个老师出去玩座 20 座车就可以了,司机和老师可以站着呀。 |
17
ps1aniuge OP 11 楼你好:“ 1 ”代表 1 个字节,也就是“ ff ”,这样就是 8 个字节了。
5 楼你好: 真的这么简单么? 给你一个文件, 大小我说了算,就 10mb 吧。 内容你说了算。 你随意改变这 10mb 内容,要求同时达到 md5=1111xxxx2222 sha1=3333xxxxx4444 按照我的方法 md5+sha1=1111+2222+3333+4444 总共 8 个字节, 给你 3 天,你能碰撞出来么?累死你! 碰撞,你懂吗? 也就是说你要算出 2 个文件内容不同, 但哈希值都是:1111-2222-3333-4444.这 8 个字节。 10mb 文件,哈希值是特定的( 16 进制,8 个字节) 1111222233334444,谁能算出来? |
18
azh7138m 2019-05-29 21:39:59 +08:00
16 位 16 进制,也就是 [0, 18446744073709551615],换句话说,我只要枚举 [0, 18446744073709551616],就必定会重复。
说白了,就是一个 64 位数,但是现在普遍认为 SHA-256 不够安全,2 ** 256 是 2 ** 64 的 6277101735386680763835789423207666416102355444464034512896 倍,是 2 ** 96 的 1461501637330902918203684832716283019655932542976 倍。 |
19
Jarek 2019-05-30 07:05:33 +08:00 via iPhone
民科终于把手伸向计算机了
|
20
msaionyc 2019-05-30 09:59:52 +08:00
民科?
|
21
0312birdzhang 2019-05-30 22:29:17 +08:00 via Android
真.儿童节快乐
|
22
pdfgo 2019-05-30 23:57:40 +08:00 via Android
愚昧无知为耻
|
23
rmb1222 2019-06-01 16:47:41 +08:00 via iPhone
生日攻击了解一下
|