【发布时间】:2011-05-24 15:04:27
【问题描述】:
我有 md5 格式的密码数据库条目,但是当用户使用“忘记密码”时,我怎样才能给他/她所需的密码?
【问题讨论】:
-
义务。 nitpick: MD5 function is hashing - 结果中的信息丢失,原始数据不可恢复。使用加密 OTOH,可以使用正确的密钥完全恢复原始数据。
标签: php mysql md5 forgot-password
我有 md5 格式的密码数据库条目,但是当用户使用“忘记密码”时,我怎样才能给他/她所需的密码?
【问题讨论】:
标签: php mysql md5 forgot-password
你不能从 MD5 哈希中做到这一点;你也不应该能够。密码恢复应该是棘手的。
通常的过程是将密码重置令牌 (URL) 发送到他们的电子邮件地址,以便用户可以选择新密码。
【讨论】:
您不能 - MD5 只是一种“单向”哈希 - 不是一种加密数据的方法,随后可以解密。
因此,总体思路是:
向用户发送一封包含重置链接的电子邮件到他们的注册地址。 (以证明他们确实拥有该地址。)重置链接应包含基于其特定用户数据的某些方面的哈希值,因此不容易被猜到等(例如:帐户创建时间。)
当用户单击链接时,他们会进入一个密码重置页面,该页面会检查上述哈希值,生成一个新密码(理想情况下是大写/小写和一些数字字符的混合,尽管我总是倾向于省略这样的字符'0'、'o'、'O' 等),然后通过电子邮件向用户发送新密码,建议他们尽快更改此密码。
然后用户可以照常登录并访问该站点。
【讨论】:
如果不将密码放入数据库,您就无法做到这一点,这是不可取的,但您可以为他/她生成一个新密码并将其发送给他们。或者他们可以重置密码的链接。
【讨论】:
您必须向用户发送new password,然后也将其设置到数据库中。否则原密码可能无法恢复。
谢谢。
【讨论】:
给定密码的长度,您有 1/100 的机会恢复该密码(字典方法)。我不会推荐它。
最好生成一个新的随机密码,发送到用户的邮箱。
【讨论】: