对于常见的md5加密,有没有一种可能使得md5(x)=x?
为了验证这个问题是否存在解,使用python写了一个程序,求证该解的存在。改程序采用简单迭代法,不知道收不收敛,又有Py的效率问题,蛋疼的等待结果。
import hashlib
x='string'
y=hashlib.md5(x.encode(encoding='gb2312'))
while y.hexdigest()!=x:
x=y.hexdigest()
y=hashlib.md5(x.encode(encoding='gb2312'))
print(y.hexdigest())
print(y.hexdigest()
嗯嗯,最新的结果是i3的核已经抗不住了。。。
这个是 cycle detecting 问题,可以看下 Floyd’s cycle-finding algorithm 和 Brent’s algorithm
我觉得应该加上随机绕动
否则可能会在一个环中永远出不来
这个和直接用random生成md5机率差不多大
额。这不是吾提出的嘛。
蛋疼。。。。等结果 😛