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


Decryption of password encrypted using PASSWORD() function of mysql

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

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

谢谢

永远不要以可以解密的方式存储密码。只需生成一个新密码。

类似:

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

您无法直接恢复此密码,只能使用暴力攻击或使用彩虹表进行哈希。

如果你不想恢复它,你可以通过mysql的update命令修改它。

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-decrypt或者DES_ENCRYPTDES_DECRYPT

注意:出于安全考虑,存储可以解密的密码是不明智的,您最好设置一个新密码。或者在您的情况下,当用户忘记了他/她的密码,您可以生成一个随机字符串,并使用它作为密码在您的数据库中生成的密码可以邮寄给您的最终用户。

正如hd所指出的,您可以更好地使用生成的字符串作为最终用户的重置令牌。