我正在使用md5加密我的数据库中的用户密码,我希望他们在忘记发送电子邮件时收回密码。问题是我不知道如何编写PHP代码来恢复它。
非常感谢任何答案或适当的链接。 感谢..
答案 0 :(得分:10)
这不能做 1
MD5是hashing function而非加密功能。这是一个单向的过程,不可逆转。
1 实际上,很多这样的密码(输入)会在哈希时产生相同的 MD5值,但它很难“找到一个并且[一般]无法找到原始。这就是“破解”密码所做的事情 - 它找到一个这样的输入,当进行散列时,会产生特定的输出。 (而且我将不再提供这条道路的帮助。)
答案 1 :(得分:6)
如上所述 - MD5与所有散列函数一样 - 不应该被颠倒。它也可以完成,因为许多字符串可以被散列到相同的字符串,当反转时你可以获得不同的字符串。
如果你很幸运,你可以在rainbowtables中找到你的哈希:http://www.md5rainbow.com/ 但它可能不会给你带来你原来的字符串,虽然它无关紧要,因为在登录时你可能会比较散列字符串。
您可能想要做的是“重置密码”而不是发送原始密码。
答案 2 :(得分:2)
MD5是一个哈希函数,你永远不应该尝试恢复哈希密码。通常的做法是删除哈希密码并强制他们从电子邮件中的链接设置新密码。传递散列密码,然后尝试反向哈希,这是一个严重的安全漏洞。
答案 3 :(得分:2)
理论上,在大多数情况下,您的用户更愿意向他们发送一个特殊的链接,在某些检查后会重置密码,您不应该在邮件中发送纯文本密码,也不应该让您的用户知道您有一个未散列的版本您系统中有密码可用。
答案 4 :(得分:0)
Rainbow tables可能会引起您的兴趣 无法从哈希中恢复原始密码,但使用彩虹表可能会找到一些会产生相同哈希值的字符串。