【问题标题】:Password Recovery: How to decrypt an md5 encrypted password? [duplicate]密码恢复:如何解密 md5 加密密码? [复制]
【发布时间】:2011-07-14 02:23:27
【问题描述】:

可能重复:
Is it possible to decrypt md5 hashes?

在我的网站中,我对密码使用 md5 加密。所以它以加密形式保存在数据库中。进行密码恢复,如何解密加密的密码??

请帮忙:)

【问题讨论】:

  • 您没有“解密”密码。还使用 MD5 对传入密码进行哈希处理,如果该哈希与数据库中的哈希匹配,则密码相同。您还应该使用“盐”。

标签: database passwords md5 encryption


【解决方案1】:

正如其他人所描述的那样,您不能轻易“解密”一个 MD5 哈希。

我想最好的密码恢复方法是这样的:

  1. 用户可以请求密码恢复 通过提供他的电子邮件地址(它应该是唯一的,以便可以通过电子邮件地址识别用户)。

  2. 会向他的地址发送一封电子邮件,其中包含 包含唯一哈希的链接(其中 您在发送时生成的 电子邮件并将其保存到数据库中)。

  3. 当用户点击链接时(以及 当然检查唯一的哈希 与数据库中的相同) 你可以展示一个表格,让他们 选择一个不同的密码。

有些人使用的另一种方法是简单地询问电子邮件地址,生成新密码并将其发送给用户。这个问题是只知道您的电子邮件地址的人可以请求更改密码。他不会知道新的通行证,你会通过电子邮件得到它,但对用户来说仍然很不方便。

【讨论】:

    【解决方案2】:

    MD5 是一种基于散列的加密。这意味着,没有办法取回原始值。您已经创建了原始数据的“校验和”。您可以使用 MD5 算法加密其他内容,然后将其与 MD5 版本的数据进行比较,但您永远无法取回原始数据。

    这类似于我说的:5 + 3 + 2 = 10。原始数据是 5、3 和 2。但是“哈希”是 10。没有办法从哈希中获取原始数据,但是如果有人提供了正确的输入( 5, 3, 2 ),我可以对其进行哈希处理,并确认它与我存档的哈希值 10 匹配。

    【讨论】:

      【解决方案3】:

      我认为 MD5 是一种单向哈希算法。这意味着一旦你加密它,数据就无法解密。 (但我相信优秀的黑客会不同意)

      无论如何,对于密码,您可以将密码的加密版本保存在数据库中。当用户尝试登录时,使用相同的 MD5 算法对输入的密码进行加密,并将密码的加密版本与数据库中存储的加密密码进行比较。

      一旦您对这种方法感到满意,您就可以开始研究在散列密码中添加盐的概念。

      此外,除了 MD5 之外,还有其他散列算法。如果您使用的是 .NET,那么框架中有一堆,例如 SHA512Managed。每一种都有其权衡,例如散列速度、安全性等。选择一种可以解决您的特定问题的方法。

      【讨论】:

        【解决方案4】:

        您无法解密 md5 密码!唯一的办法就是暴力破解! 如果您想恢复密码,请通过电子邮件(或任何其他方式)将随机字符串发送给用户并设置为 md5 密码......只是一个想法

        编辑: 如果可以解密,为什么要加密密码以确保其安全?没有意义! -> 你基本上可以不加密密码!

        【讨论】:

        • 完全同意你的观点:)
        【解决方案5】:

        这并不容易,但最好使用rainbow table,因为MD5 确实有vulnerabilities

        有几个online versions,您可能信任也可能不信任(或工作)。

        【讨论】:

          【解决方案6】:

          您可以尝试在 MD5 哈希数据库中进行搜索,例如:

          机会很小,但你可以试试。

          【讨论】:

            猜你喜欢
            • 2011-10-24
            • 1970-01-01
            • 1970-01-01
            • 2019-10-10
            • 2012-04-19
            • 2012-09-30
            • 2019-08-13
            • 2015-11-12
            • 2018-03-28
            相关资源
            最近更新 更多