如何从 MD5 恢复密码?

Posted

技术标签:

【中文标题】如何从 MD5 恢复密码?【英文标题】:How to recover password from MD5? 【发布时间】:2012-04-19 22:37:08 【问题描述】:

我正在使用 md5 加密数据库中的用户密码,我希望他们在忘记密码时通过向他们发送电子邮件来取回密码。问题是我不知道如何编写 php 代码来恢复它。

非常感谢任何答案或适当的链接。 谢谢..

【问题讨论】:

散列,不加密,你不能这就是使用散列的全部意义。标准做法是将它们发送到一个 url 以设置新密码。 如果您希望密码可恢复,为什么首先要对它们进行哈希处理? (注意:我并不是建议不要散列密码。) @Dagon,如果你对此给出答案,我会投票赞成,并提供更多关于为什么要这样做的解释 Is it possible to decrypt md5 hashes? 的可能重复项 【参考方案1】:

这是做不到的1

MD5 是hashing function 而不是加密函数。这是一个单向过程,不可逆。

1其实,有很多这样的密码(输入)会在散列时得到相同的 MD5值,但它“很难” " 只找到 一个 并且[通常] 不可能找到 原始的一个。这就是“破解”密码的作用——它找到一个这样的输入,当散列后,会产生特定的输出。 (在这条路上我不会再提供任何帮助了。)

【讨论】:

由于无法进行状态反转,但是可以通过查看彩虹表找到等效项。在另一个答案中提到了这一点(虽然引用的链接很糟糕,但很容易通过谷歌找到对应的链接)。【参考方案2】:

理论上,在大多数情况下,您的用户希望您向他们发送一个特殊链接,该链接将在经过一些检查后重置密码,您不应该在邮件中发送纯文本密码,也不应该让您的用户知道您有一个未散列的版本您的系统中有多少可用的密码。

【讨论】:

【参考方案3】:

如前所述 - MD5 与所有散列函数一样 - 不应反转。也可以这样做,因为许多字符串可以散列到同一个字符串,并且在反转时可以得到不同的字符串。

如果你幸运的话,你可以在彩虹表中找到你的哈希值:http://www.md5rainbow.com/ 但它可能不会给您带来原始字符串,尽管这并不重要,因为在您的登录中您可能会比较散列字符串。

您可能想要做的是“重置密码”而不是发送原始密码。

【讨论】:

上面的链接坏了,但是当我这样做时,我只用谷歌“md5 Rainbow”,我得到了crackstation.net,它工作了【参考方案4】:

MD5 是一个散列函数,你不应该尝试恢复散列密码。通常的做法是删除散列密码并强制他们从电子邮件中的链接设置新密码。传递散列密码,然后尝试对其进行反向散列,这是一个严重的安全漏洞。

【讨论】:

【参考方案5】:

Rainbow tables 可能会引起您的兴趣。 无法从哈希中恢复原始密码,但使用彩虹表可能会找到一些字符串,这些字符串会产生您需要的相同哈希。

【讨论】:

请告诉我您负责哪些网站,这样我可以避开它们。

以上是关于如何从 MD5 恢复密码?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone iOS如何在应用程序从后台恢复时添加密码/密码锁定屏幕?

Mac实用教程:如何从加密的iTunes备份中恢复数据?

Mac技巧分享:如何从加密的iTunes备份中恢复数据?

如何安全保护 Excel VBA 项目代码,使密码恢复程序无法恢复/破解它?

如何恢复或更改 Oracle sysdba 密码 [关闭]

密码恢复asp