我正在使用SQL的PASSWORD()
函数来加密密码。现在我正在寻找一种方法来获取密码,如果有人忘记了他/她的密码。
$user = "select * from users where email='$email' and password='PASSWORD($pass)'";
由于
答案 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_ENCRYPT
和AES_DECRYPT
方法
http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_aes-decrypt
或DES_ENCRYPT
和DES_DECRYPT
注意:出于安全原因存储可以解密的密码并不明智,您可以更好地设置新密码。或者在用户忘记密码的情况下,您可以生成随机字符串并将其用作数据库中的密码,生成的密码可以邮寄给最终用户。
正如hd所述,您最好将生成的字符串用作最终用户的重置令牌。
答案 2 :(得分:1)
您无法直接恢复此密码,只有您可以使用暴力攻击或使用彩虹表来存储此哈希值。
或者如果您不想恢复它,可以通过mysql的更新命令进行更改。