了解md5的工作原理,是否可以使用基于群体的算法(如遗传编程)来破解简单密码?
例如,给定一个介于5到10个字符之间的字符串的md5哈希值,我们将尝试重新获取该字符串。
如果是,那可能是什么
这是为了理解遗传算法的应用,并了解是否有人做过这类事情。
答案 0 :(得分:7)
不是。
只有5个字符,你可以在不太合理的时间内强行使用它,但大概你要求更多关于GA而不是关于破坏MD5。问题是MD5哈希中没有可利用的结构。 “靠近”的字符串不会产生在任何有用的距离关系下“靠近”的散列。适应度函数基本上是随机的。
答案 1 :(得分:1)
我认为答案是“不”。因为您无法获得任何交叉功能。而适应度函数将是布尔值。仅具有变异算子的GA和这种适应度函数是一种强力。
答案 2 :(得分:1)
不,这不太可能。
例如,使用遗传算法。用于查找某些功能的本地/全局最大值/最小值。在md5哈希的情况下,如果更改计算md5哈希的值,则md5哈希完全改变,因此缩小输入值范围是完全无用的。如果输入数据以任何方式改变,MD5算法被设计为散列生成的值。找到正确值的唯一可能性是当你应用变异时,但它会导致检查随机输入值是否生成给定的散列(正如oxilumin所说 - 只是一种暴力攻击)。
您可以阅读有关查找生成特定md5哈希here (rainbow tables)的值的更多信息。
答案 3 :(得分:1)
虽然答案可能是“不”,但有一点需要注意:发布的冲突是只有几个关键字节不同的字符串:https://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
无法保证使用遗传算法猜测明文,但以这种方式发现碰撞可能更有效。
或者如果它在PHP中并将md5哈希与==
运算符进行比较...... https://eval.in/108854