Php MySQL加密密码,但如何解密?

Php MySQL加密密码,但如何解密?,php,mysql,Php,Mysql,我正在学习本教程,并且正在使用ENCRYPT MySQL函数 但现在我有一个问题,如何在MySQL或php中解密加密的密码?我想比较输入的密码是否与加密密码相同 我怎么比较呢?MySQL必须使用加密功能进行加密 我正在搜索,但找不到如何解密ENCRYPT MySQL函数的任何内容…您无法解密密码-它是用单向加密加密的 您需要做的是加密输入的密码,并将结果与存储的加密密码进行比较。您无法解密密码-它是用单向加密加密的 您需要做的是对输入的密码进行加密,并将结果与存储的加密密码进行比较。使用的是单向

我正在学习本教程,并且正在使用ENCRYPT MySQL函数

但现在我有一个问题,如何在MySQL或php中解密加密的密码?我想比较输入的密码是否与加密密码相同

我怎么比较呢?MySQL必须使用加密功能进行加密


我正在搜索,但找不到如何解密ENCRYPT MySQL函数的任何内容…

您无法解密密码-它是用单向加密加密的


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

您无法解密密码-它是用单向加密加密的

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

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

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

SELECT * FROM `user`
WHERE `name` = 'hek2mgl` 
  AND `password` = ENCRYPT('user_input', `password`)
ENCRYPT函数将输出一个以salt本身为前缀的salt字符串,因此将其返回加密密码将重新提供原始salt。

使用单向散列算法,没有解密。。这就是加密密码的意义:黑客应该没有选择权查看明文密码

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

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

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

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


此外,一个简单的散列函数就足以避免MD5,并利用salt来防止字典或彩虹表攻击

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



此外,一个简单的散列函数就足以避免MD5,并利用salt来防止字典或彩虹表攻击

如果您试图解密密码,则说明您做得不对。请比较加密的哈希值,然后选择。。。其中savedhash=encrypt'newpassword'。奇怪的是,教程告诉你如何加密它,而不是一旦加密后如何处理它。Marc它从来都不一样,我已经尝试过了,可能是因为术语encrypt是错误的。密码不是加密的,而是散列的。如果你试图解密密码,你就错了。你比较加密的散列选择。。。其中savedhash=encrypt'newpassword'。奇怪的是,教程告诉你如何加密它,而不是一旦加密后如何处理它。Marc它从来都不一样,我已经尝试过了,可能是因为术语encrypt是错误的。密码不是加密的,而是散列的。所以你建议加密'passwor','dsljfljfsdljfljsdf',我建议$hashed_pass=sha1password+salt;。每次散列密码时都应该使用Salt,您可以从用户数据生成Salt,对Salt生成过程保密,将其存储在数据库中,并确保它对每个用户都是唯一的。因此,您建议加密“passwor”,“dsljfljfsdljfljsdf”,我建议使用$hashed_pass=sha1password+Salt;。每次散列密码时都应该使用Salt,您可以从用户数据生成Salt,对Salt生成过程保密,将其存储在数据库中,并确保它对每个用户都是唯一的。加密函数总是返回不同的值,因此不能在查询中使用,而是使用密码函数是的,您是对的,在没有salt参数的情况下调用时,它使用随机salt。我在写答案时没有意识到这一点。非常感谢您的评论。在阅读了手册之后,我仍然认为它可以用于密码加密任务,但必须正确处理salt。我很快会编辑答案。请看:man crypt-默认随机salt值是加密短语的前两个字符加密函数总是返回不同的值,因此不能在查询中使用,而是使用密码函数是的,您是对的,在没有salt参数的情况下调用它时使用随机salt。我在写答案时没有意识到这一点。非常感谢您的评论。在阅读了手册之后,我仍然认为它可以用于密码加密任务,但必须正确处理salt。我将很快编辑答案。请参阅:man crypt-默认的随机salt值是加密短语的前两个字符