PHP密码\u使用不同的哈希进行验证

PHP密码\u使用不同的哈希进行验证,php,hash,passwords,Php,Hash,Passwords,我有一个关于password\u hash()和password\u verify()的技术问题 如果我多次通过password\u hash()运行示例密码,每次都会得到不同的结果。我想这是件好事 问题是如果实际哈希值不断变化,password\u verify()如何实际验证候选密码 我在这里问这个问题是因为它与PHP相关 对于那些认为这个问题重复的人: 此问题不是链接问题的重复。我知道该值会发生变化,password\u verify\u与此配合使用 这是一个如何发生的问题。如密码\u h

我有一个关于
password\u hash()
password\u verify()
的技术问题

如果我多次通过
password\u hash()
运行示例密码,每次都会得到不同的结果。我想这是件好事

问题是如果实际哈希值不断变化,
password\u verify()
如何实际验证候选密码

我在这里问这个问题是因为它与PHP相关

对于那些认为这个问题重复的人:

此问题不是链接问题的重复。我知道该值会发生变化,
password\u verify\u
与此配合使用

这是一个如何发生的问题。

密码\u hash()函数的

使用的算法、成本和salt作为散列的一部分返回。因此,验证哈希所需的所有信息都包含在其中。这允许password_verify()函数验证散列,而无需单独存储salt或算法信息


当相同的输入——算法、成本、salt和密码——输入到密码计算中时,将生成相同的输出。因此,
password\u verify()
从原始计算中获取算法、成本和盐,使用正在测试的密码生成新的哈希,并将以前的结果与新生成的结果进行比较。如果匹配,则验证成功,否则为错误

更好的例子是。然后包括细分,@chris85 OP询问
password\u verify()
如何验证候选密码,而不是举例。?赞成。。。这是
password\u hash
存储密码的方式,由于格式不同,
password\u verify
可以对其进行比较。。。这是正确的答案,我只想指出,对于相同值的多个后续散列,salt是不同的部分,导致每个散列的唯一性。算法和成本通常不会改变。事实上,7.2将是第一次使用
password\u DEFAULT
@FKEinternet更改
password\u hash
的算法。我已经阅读了该链接,我知道它是独立的。我已将问题改为如何核实?我想知道它是怎么工作的。@Machavity:这不是复制品,它是复制品。关于这个@Machavity有很多答案不,链接的问题没有解释
password\u verify
如何发挥其魔力。其他相关问题也不例外。我确实读过。