【问题标题】:is it possible to find the md5 hash of a password without out actually having the original password是否可以在没有实际原始密码的情况下找到密码的 md5 哈希
【发布时间】:2017-06-02 01:36:05
【问题描述】:

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

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

【问题讨论】:

  • 它与 python 没有任何关系,因为您没有显示任何代码。是的,目前还不清楚。找到 md5 哈希?在哪里?

标签: hash passwords computation-theory


【解决方案1】:

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

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

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

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

一个推论是,如果hash(x) 在您更改单个位时显着 更改(如hash(x+0x000001) 的情况,那么它会使比较函数更快 em> (因为在平均情况下,您实际上只需要检查高位来确定两个对象是否相同)。这意味着您不能简单地通过迭代哈希来轻松计算顺序项的哈希(即“猜测”函数 hash(x) 的哈希输出,而无需首先使用 x)。

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 2010-12-01
    • 1970-01-01
    • 2011-07-05
    相关资源
    最近更新 更多