我在我的数据库中使用md5加密用户的密码,并且想要通过发送电子邮件来帮助他们找回忘记的密码。问题是我不知道如何编写PHP代码来恢复它。
如果有任何答案或适当的链接,将不胜感激。谢谢。
如果有任何答案或适当的链接,将不胜感激。谢谢。
无法完成此操作1
MD5是一个哈希函数而不是加密函数。它是一个单向过程,不可逆。
1实际上,有许多这样的密码(输入),当哈希时将产生相同的MD5值,但仅找到一个并且通常不可能找到原始的。这就是“破解”密码的含义 - 它找到一个这样的输入,当哈希时会产生特定的输出。(我将不再提供更多帮助。)
如前所述,MD5像所有哈希函数一样,不能被反转。这也可以做到,因为许多字符串可以被散列成相同的字符串,当反转时,您可以得到不同的字符串。
如果您很幸运,可以在彩虹表中找到您的哈希值:http://www.md5rainbow.com/,但它可能会给您带来不是原始字符串,尽管这并不重要,因为在登录时您可能会比较散列字符串。
您可能想要做的是“重置密码”,而不是发送原始密码。
MD5是一种哈希函数,您不应尝试恢复已经哈希过的密码。常见的做法是删除已哈希的密码,并强制用户通过电子邮件中的链接设置新密码。传递哈希密码,然后尝试反向哈希,会造成严重的安全漏洞。
从理论上来说,在大多数情况下,用户希望您发送一个特殊的链接,在一些检查后重置他们的密码。您不应该在邮件中发送明文密码,也不应该让用户知道您的系统中有未加密版本的密码。
彩虹表可能会对您有所帮助。
从哈希值中恢复原始密码是不可能的,但使用彩虹表可能会找到一些字符串,可以生成与所需哈希相同的哈希值。