
1 SErHo 2016 年 10 月 2 日 md5(x) = x ?? 估计只能穷举了。 |
2 techmoe 2016 年 10 月 2 日 via Android 如何创造一只从自己下的蛋里孵出来的母鸡? |
3 Tink PRO 求高手 |
4 Tink PRO 很好玩的问题 |
5 shiji 2016 年 10 月 2 日 via Android |
6 300 2016 年 10 月 2 日 via Android 我还想过一个压缩文件的密码是它本身的 md5 值(ω*) |
7 watara 2016 年 10 月 2 日 @winterbells 一样,我也想过这个 |
8 crs0910 2016 年 10 月 2 日 via iPhone 先随便找一个文件计算 md5 值,然后把文件内容修改成改值并保存,因为唯一性,该文件 md5 值肯定会变化,继续改成变化后的值,理论上重复无数次都得不到一致的文件 |
11 jhdxr 2016 年 10 月 2 日 @crs0910 『唯一性』这三个字从哪冒出来的? md5 的取值范围是 32 位大小写不敏感的英文数字,是有限的。无限域到有限域的映射,怎么可能唯一 |
12 RqPS6rhmP3Nyn3Tm 2016 年 10 月 2 日 MD5 值域是有限的,而数据的可能性是无限的,所以 MD5 必然碰撞。 但是由于文本本身就是一个 MD5 ,它的值域也变得有限了。 所以可能有也可能没有。 |
13 maskerTUI 2016 年 10 月 2 日 可以试试百度: MD5 碰撞。 |
14 codecrash 2016 年 10 月 2 日 via Android 也许可以加一些其他的内容来调节文件的 md5 值,使他和我们想要的一样 |
15 liuyi_beta 2016 年 10 月 2 日 MD5 具有很强的扩散性,任何一个字节的改变都会产生雪崩效应,使得最后生成的 MD5 值和改变前的 MD5 值差别很大,所以只能一次次地去更改,然后碰撞出这样一个结果 |
16 nodin 2016 年 10 月 2 日 via Android 如何让一个不为零的数加一等于他本身。 |
17 imlonghao673 2016 年 10 月 2 日 via Android |
18 upczww 2016 年 10 月 2 日 via Smartisan T1 这难道不是一个悖论么? |
19 imNull 2016 年 10 月 2 日 看看这个电影《前目的地》 |
20 ldbC5uTBj11yaeh5 2016 年 10 月 2 日 via Android |
22 DiamondbacK 2016 年 10 月 2 日 @BXIA 这个论证有问题。就算是两个无限集,也未必相交。 |
23 CYKun 2016 年 10 月 2 日 @shiji 翻译了一下你给的第一个问答: 因为 MD5 校验和是 128 位长的,所以不动点(译注:也就是 MD5 值等于自身的字符串)也应该是 128 位的。假设任意字符串的 MD5 校验和是连续随机分布的,那么任意给定的 128 位字符串是一个 MD5 不动点的概率是 1/2^128 。 因此,不存在 128 位的不动点的概率是 (1 - 1/2^128)^(2^128),所以存在不动点的概率是 1 - (1 - 1/2^128)^(2^128)。 因为当 n 趋向与无穷大时,(1 - 1/n)^n = 1/e ,而 2^128 是一个很大的数,所以这个概率差不多就是 1 - 1/e ≈ 63.21%。 当然,这个问题的答案肯定不是随机的这个不动点要么存在要么不存在。但是,我们可以 63.21%地确信存在一个这样的字符串。(还有,注意这个数字跟键空间的大小无关不管 MD5 校验和是 32 位的还是 1024 位的,这个答案都是一样的,只要它比 4 或 5 为长就行了) |
24 CYKun 2016 年 10 月 2 日 @jigloo ``` estimated time left: 2.01760719973e+36 hours estimated time left: 8.40669666555e+34 days estimated time left: 2.3032045659e+32 years Traceback (most recent call last): File "md5.py", line 35, in <module> pps = (num-lastnum)/ (nowtime.total_seconds()-lasttime.total_seconds()) ZeroDivisionError: float division by zero ``` 233 |
25 Exin 2016 年 10 月 3 日 可以加一个限定条件:如何创建一个*内容长度最短*的文本文件... 这样结果就是唯一的 |
26 RqPS6rhmP3Nyn3Tm 2016 年 10 月 3 日 via iPhone @DiamondbacK 你说的是哪个?我指的是有限集投射到有限集,所以结论是可能有可能没有啊 |
27 bao3 2016 年 10 月 3 日 via Android 楼主这个议题似乎跟薛定谔的猫一个道理,在你没有写入 MD5 前,你怎么知道它的内容。 |
28 DiamondbacK 2016 年 10 月 3 日 @BXIA 一个函数是否为单射 (是否存在碰撞),与这个函数是否存在不动点 (楼主的问题),是两个不相干的问题。 令函数 f 定义域为 {1, 2, 3}, f(1) = 2 f(2) = 1 f(3) = 1 这不是一个单射,但仍然没有不动点。这样的例子还有 f(x) = |x| + delta f(x) = x^2 + 1/4 + delta f(x) = sin(x), x != 0 其中 delta > 0 。它们都没有不动点,而且只要在适当的定义域下 (既可以有限也可以无限),它们都不是单射。 **一般地**,设 A 、 B 为任意非空集合,其中 |B| > 1 , g 是一个函数,它的定义域为 A 。对任意 x 属于 A ,令 g(x) 属于 B - { x }。这样构造出来的函数 g ,值域就是 B 的子集,但是 g 没有不动点。 这表明,无论给定什么样的定义域,无论值域多么小,只要不是一个单元素集合,函数都可以没有不动点。 |
29 RqPS6rhmP3Nyn3Tm 2016 年 10 月 3 日 @DiamondbacK 你说得很对。是我搞错了 |
30 shuson 2016 年 10 月 3 日 |
34 hundan 2016 年 10 月 3 日 x=md5(x) 大概是这样吗- - |
42 wintercoder 2017 年 6 月 4 日 |
43 Vizogood 2017 年 6 月 5 日 via iPhone |