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