我正在阅读本教程,我正在使用ENCRYPT MySQL函数。
但是现在我遇到了如何在MySQL或php中解密加密密码的问题?我想比较输入的密码是否与加密密码相同。
我怎么比较呢? MySQL必须使用ENCRYPT函数加密!
我正在搜索,但我找不到任何解密ENCRYPT MySQL函数的方法......
ENCRYPT
正在使用单向散列算法,没有DECRYPT
..这就是密码的意义:黑客应该没有选择查看明文密码。
当您需要将db中的密码与用户输入的密码进行比较时,请使用这样的查询(使用准备好的查询)
SELECT * FROM `user`
WHERE `name` = 'hek2mgl`
AND `password` = ENCRYPT('user_input', `password`)
ENCRYPT
函数将输出一个前缀为盐本身的“盐渍”字符串,因此将其加回加密密码将重新提供原始盐。
您无法解密密码 - 它使用单向加密进行加密。
您需要做的是加密输入的密码并将结果与存储的加密密码进行比较。
你不需要解密密码。为了检查用户是否提交了正确的密码,只需重新加密用户提供的密码,并检查它是否与存储在数据库中的密码相匹配。
此外,一个简单的哈希函数就足够了(避免MD5并使用salt来防止字典或彩虹表攻击!)