MySQL ENCRYPT密码但如何解密?

时间:2013-05-10 15:39:34

标签: php mysql

我正在阅读本教程,并且我正在使用ENCRYPT MySQL函数。

http://www.pixelinx.com/2010/10/creating-a-mail-server-on-ubuntu-using-postfix-courier-ssltls-spamassassin-clamav-and-amavis/

但是现在我遇到了如何在MySQL或php中解密加密密码的问题?我想比较输入的密码是否与加密密码相同。

我该如何比较?必须使用ENCRYPT函数加密MySQL!

我正在搜索,但我找不到任何解密ENCRYPT MySQL函数...

3 个答案:

答案 0 :(得分:14)

ENCRYPT使用单向哈希算法,没有DECRYPT ..这就是密码的意义:黑客应该没有选择查看明文密码。

当您需要将db中的密码与用户输入的密码进行比较时,请使用这样的查询(使用准备好的查询)

SELECT * FROM `user`
WHERE `name` = 'hek2mgl` 
  AND `password` = ENCRYPT('user_input', `password`)

ENCRYPT函数将输出一个带有盐本身前缀的“盐渍”字符串,因此将其加回加密密码将重新提供原始盐。

答案 1 :(得分:4)

您无法解密密码 - 使用单向加密进行加密。

您需要做的是加密输入的密码并将结果与​​存储的加密密码进行比较。

答案 2 :(得分:0)

您无需解密密码。为了检查用户是否提交了正确的密码,只需重新加密用户提供的密码,并检查它是否与数据库中存储的密码相匹配。

此外,一个简单的哈希函数就足够了(避免MD5并使用salt来防止字典或彩虹表攻击!)