是否有可能在没有实际拥有原始密码的情况下找到密码的 md5 散列

is it possible to find the md5 hash of a password without out actually having the original password

我只是在 python 上乱搞一些代码,我意识到如果你有 md5(基本上是暴力攻击,输入 md5,去通过数百万个密码,将它们转换为 md5 并检查是否匹配,然后输出密码)但困难的是获得 md5。我做了一些挖掘,我发现的只是一些视频,人们使用随机生成的 md5 密码哈希值,然后找出它对应的密码。我想知道是否有任何方法可以在没有原始密码的情况下找到密码的 md5 哈希值。谢谢

-如果有任何不清楚的地方,请在评论中告诉我,我会清理它

你是正确的,你可以暴力破解 md5 哈希来检索原始密码,前提是原始密码和暴力尝试哈希到相同的值 .为了弥补这一点,密码系统通常使用所谓的 "salt" 来使这变得更加困难。 (另请参阅:What is SALT and how do i use it?

您的问题的答案通常是否定的,如果不先获得某个值,就没有简单的方法来获取该值的哈希值。

最初,哈希算法旨在获取一些输入并对其进行操作,以便算法的输出可以用作 table 值的索引。目标是拥有一个 1:1 散列(理想情况下,这是非常快的,希望是恒定时间)。这意味着给定一些输入值 xy = hash(x) 应该只有 x 散列到 y。换句话说,y1 = hash(x1) = hash(x) 当且仅当 x1 = x.

随着时间的推移,开发了具有其他属性的算法。由于散列算法已普遍用于密码存储和快速比较之类的事情,因此散列算法的价值之一是输入的微小变化应如何导致输出差异。换句话说,如果 x 完全改变(如 not(x) 的情况),或者如果它改变了一个位,散列函数 hash(x) 应该改变。

一个推论是,如果 hash(x) 改变 显着 当你改变一个位时(如 hash(x+0x000001) 的情况),那么它使比较函数快得多(因为在一般情况下,您实际上只需要检查高阶位来确定两个对象是否相同)。这意味着您无法轻松计算顺序项的散列,只需通过散列进行迭代(即 "guessing" 函数 hash(x) 的散列输出,而无需先 x)。