MySQL ENCRYPT密码但如何解密?

问题描述 投票:1回答:3

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

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

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

我怎么比较呢? MySQL必须使用ENCRYPT函数加密!

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

php mysql
3个回答
14
投票

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

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

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

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


4
投票

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.