可能重复:
是否可以解密md5哈希?
我有一个用于存储用户名,密码,电子邮件等的数据库.如果用户忘记了他/她的密码,我会将其发送到他们的电子邮件帐户.
问题是我在将密码存储到数据库之前将密码加密到md5.如果用户的密码是ABC,我将其作为867dbd57e9ca9f808存储在我的数据库中.如果用户忘记了密码,我就无法发送用户"867dbd57e9ca9f808".我需要发送"ABC".但是,这需要我"un-md5"字符串,我认为这是不可能的.
Rob*_*bik 10
MD5被设计为哈希,这只是一种方式,否则它不会是哈希.您不应该向用户发送密码,但可以更改密码.您应该生成一个令牌,发送链接以使用GET参数中的令牌将密码更改为用户的邮件.如果用户更改密码,请删除令牌.此外,您应该记住,令牌必须有到期时间.
就像是:
myurl.com/passwordrecovery?token=someGeneratedToken
Run Code Online (Sandbox Code Playgroud)
在数据库中,您可以查找令牌并获取用户ID.例如,您的表结构可能如下所示:
user_id | token | expiry_time
Run Code Online (Sandbox Code Playgroud)
如果您只保留数据库中的令牌和到期时间,请不要这样做.将令牌与用户关联,否则用户可以请求更改密码,并且他将获得以下链接(不要这样做):
myurl.com/passwordrecovery?token=token&user_id=number
Run Code Online (Sandbox Code Playgroud)
这样他就可以通过替换user_id来更改别人的密码.并访问他的帐户.到期时间不应超过24小时.
不要使用普通的md5,它很容易破解.用pbkdf2例如.
PHP实现:
PHP-Crypt-Lib,
Pbkdf2 by inanimatt
| 归档时间: |
|
| 查看次数: |
7644 次 |
| 最近记录: |