2011-05-02 101 views
-1

可能重复:
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?充分利用数据库MD5码和在PHP中对其进行解码

我不知道是不是正确的方式来问这个问题,但我在PHP中实现我自己的会员脚本,现在我坚持从数据库中检索MD5代码。好的,我将用户信息插入数据库,并且由于安全问题,我在将密码保存到数据库之前对密码进行了加密,但是我的问题是,当我尝试创建忘记密码的东西时,如何从密码中获取未加密的密码数据库。顺便说一下,我使用MySQL,我的问题不是关于从数据库中插入或检索数据,我只问如何反转MD5。提前致谢!

+0

你不。您重置*忘记密码*的密码。 – 2011-05-02 23:42:43

+0

*加密*是*解密*为*哈希*是什么? ;-) – deceze 2011-05-02 23:52:43

+0

哈希是...比较另一个哈希我猜,这就是最好的我可以拿出 – Ibu 2011-05-02 23:55:57

回答

6

你可以用”吨。 MD5哈希,或哈希一般来说,是不可逆的。这正是你首先使用它们来存储密码的原因,因为你不想知道实际密码的责任。

忘记密码功能是通过发送电子邮件给用户一次性链接,他必须点击并让他输入一个新的密码。

+0

+1 correctomondo! – alex 2011-05-02 23:48:23

+0

这是做这件事的最好方法。作为一个方面说明,如果密码长度小于8个字符,则应该使用md5哈希值,因为解码更短的md5哈希变得更容易。 – reefine 2011-05-02 23:48:25

+0

@user您无论如何都需要密码,而不仅仅是短。此外,你不应该再使用MD5。 – deceze 2011-05-02 23:49:43

1

其实你没有得到密码回来过,

您散列密码进入,并比较了在你的数据库,那它是如何工作:)好运气

+0

如果它们匹配,那么你有正确的密码。 md5是不可逆的,这意味着它是单向票据,所以即使有人拿到你的散列码,也很难知道什么是密码 – Ibu 2011-05-02 23:43:55

1

MD5是一个单向哈希,所以它反转它不会工作。

你如何做到这一点是对什么是存储例如PERFORMA比较: SQL用于输入用户:

INSERT INTO `users` (`username`, `password`) VALUES ('$username', MD5('$password')); 

这将意味着密码被存储为哈希值。 当有人试图登录你做同样的事情,但在select语句:

SELECT * FROM `users` WHERE `username` = '$username' AND `password` = MD5('$password'); 

如果有一个结果,则用户身份验证,如果有超过1分的结果,那么你玩得开心:)

对于忘记的密码位,您最好设置一个链接,用户通过电子邮件发送代码和链接。他们可以在“密码重置”页面输入该密码以及新密码。

HTH

0

有各种不同的方式来处理忘记的密码,但MD5哈希搞清楚原来的密码是不是真的其中之一。

但是,对于此记录,确实不应该使用MD5(或与安全相关的任何其他内容)。 MD5是漂亮严重破碎 - 除非有绝对没有选择的问题,切换到别的东西(哦,但你也应该知道SHA-1只比MD5好一点)。

相关问题