使用mysql的PASSWORD()函数加密的密码解密

时间:2014-08-05 11:56:58

标签: php sql password-encryption password-recovery

我正在使用SQL的PASSWORD()函数来加密密码。现在我正在寻找一种方法来获取密码,如果有人忘记了他/她的密码。

$user = "select * from users where email='$email' and password='PASSWORD($pass)'";

由于

3 个答案:

答案 0 :(得分:2)

您绝不应以可以解密的方式存储密码。而只是生成一个新密码。

类似的东西:

UPDATE users SET `password` = 'PASSWORD(someSuper.Safe123Password!)' WHERE `id` = USERID

答案 1 :(得分:1)

PASSWORD()是一种散列方法,因此无法将其解密为原始字符串 http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html

所以问题的答案

如果要加密/解密,可以使用AES_ENCRYPTAES_DECRYPT方法 http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_aes-decryptDES_ENCRYPTDES_DECRYPT

注意:出于安全原因存储可以解密的密码并不明智,您可以更好地设置新密码。或者在用户忘记密码的情况下,您可以生成随机字符串并将其用作数据库中的密码,生成的密码可以邮寄给最终用户。

正如hd所述,您最好将生成的字符串用作最终用户的重置令牌。

答案 2 :(得分:1)

您无法直接恢复此密码,只有您可以使用暴力攻击或使用彩虹表来存储此哈希值。

或者如果您不想恢复它,可以通过mysql的更新命令进行更改。