我有 md5 加密密码,当他使用“忘记密码”时如何给用户密码?
Posted
技术标签:
【中文标题】我有 md5 加密密码,当他使用“忘记密码”时如何给用户密码?【英文标题】:I Have md5 encrypted password, how to give the password to user when he uses "Forgot password"? 【发布时间】:2011-05-24 15:04:27 【问题描述】:我有 md5 格式的密码数据库条目,但是当用户使用“忘记密码”时,我怎样才能给他/她所需的密码?
【问题讨论】:
义务。 nitpick: MD5 function is hashing - 结果中的信息丢失,原始数据不可恢复。使用加密 OTOH,可以使用正确的密钥完全恢复原始数据。 Is it possible to decrypt md5 hashes? 的可能重复项 【参考方案1】:你不能从 MD5 哈希中做到这一点;你也不应该能够。密码恢复应该是棘手的。
通常的过程是将密码重置令牌 (URL) 发送到他们的电子邮件地址,以便用户可以选择新密码。
【讨论】:
【参考方案2】:您不能 - MD5 只是一种“单向”哈希 - 不是一种加密数据的方法,随后可以解密。
因此,总体思路是:
向用户发送一封包含重置链接的电子邮件到他们的注册地址。 (以证明他们确实拥有该地址。)重置链接应包含基于其特定用户数据的某些方面的哈希值,因此不容易被猜到等(例如:帐户创建时间。)
当用户单击链接时,他们会进入一个密码重置页面,该页面会检查上述哈希值,生成一个新密码(理想情况下是大写/小写和一些数字字符的混合,尽管我总是倾向于省略这样的字符'0'、'o'、'O' 等),然后通过电子邮件向用户发送新密码,建议他们尽快更改此密码。
然后用户可以照常登录并访问该站点。
【讨论】:
我会跳过第二封发送新密码的电子邮件。让用户直接从该链接更改密码。【参考方案3】:如果不将密码放入数据库,您就无法做到这一点,这是不可取的,但您可以为他/她生成一个新密码并将其发送给他们。或者他们可以重置密码的链接。
【讨论】:
【参考方案4】:您必须向用户发送new password
,然后也将其设置到数据库中。否则原密码可能无法恢复。
谢谢。
【讨论】:
【参考方案5】:给定密码的长度,您有 1/100 的机会恢复该密码(字典方法)。我不会推荐它。
最好生成一个新的随机密码,发送到用户的邮箱。
【讨论】:
实际上远小于 1/100 - 这就是散列的全部意义:一种简单而快速的方式(要散列的数据),复杂且非常慢(如“正确完成几乎不可能”)在另一个方向(散列到数据)。 @Piskvor 实际上这只是我的估计。 :P 这取决于使用的字典。 如果您获得 1/100 的恢复率。你有一个非常不安全的系统。事实上,您可以使用各种 md5 解码器/编码器测试您自己的系统的恢复率。射击为0%恢复。 md5decrypter.com以上是关于我有 md5 加密密码,当他使用“忘记密码”时如何给用户密码?的主要内容,如果未能解决你的问题,请参考以下文章