可能重复:
I Have md5 encrypted password, how to give the password to user when he uses “Forgot password”?
PHP:How to send the original password to the user when he clicks forgot password which is encrypted by using md5?
我不知道这是问题这个问题的正确方法,但我正在用PHP实现我自己的会员资格脚本,现在,我仍然坚持从数据库中检索MD5代码。好的,我将用户信息插入数据库,由于安全问题,我在将密码保存到数据库之前对其进行了加密,但我的问题是,当我尝试创建忘记密码的东西时,如何从中获取未加密的密码数据库。顺便说一句,我使用MySQL而我的问题不是关于从数据库插入或检索数据,我只问我如何反转MD5的事情。提前谢谢!
答案 0 :(得分:6)
你不能。一般来说,MD5哈希或哈希是不可逆的。这正是您首先使用它们来存储密码的原因,因为您不需要知道实际密码的责任。
忘记密码功能是通过向用户发送一封电子邮件来实现的,他只需点击一次链接并让他输入新密码。
答案 1 :(得分:2)
答案 2 :(得分:1)
实际上你再也没有收到密码了,
您对输入的密码进行哈希并与数据库中的has进行比较,这就是它的工作原理:)祝你好运
答案 3 :(得分:1)
MD5是单向哈希,所以反转它不会起作用。
如何执行此操作是对存储的内容进行执行比较,例如: 用于输入用户的SQL:
INSERT INTO `users` (`username`, `password`) VALUES ('$username', MD5('$password'));
这意味着密码存储为哈希。 当有人试图登录时,你会在select语句中执行相同的操作:
SELECT * FROM `users` WHERE `username` = '$username' AND `password` = MD5('$password');
如果有结果,那么用户会通过身份验证,如果结果超过1,那么您就玩得很开心:)
对于忘记密码位,您最好设置一个链,用户通过电子邮件发送代码和链接。他们可以在“密码重置”页面输入该代码以及新密码。
HTH
答案 4 :(得分:0)
有多种方法可以处理忘记的密码,但是从MD5哈希中找出原始密码实际上不是其中之一。
但是,对于记录,您确实不应该使用MD5(或许多与安全相关的其他内容)。 MD5非常严重破坏 - 除非绝对在此事上没有选择,切换到别的东西(哦,但你也应该知道SHA-1只是一点点比MD5更好。