我一直在阅读PHP Password_Hash函数的用法,它声明它会自动生成一个盐,并且不建议手动生成一个盐。
考虑到这一点,这是否意味着我可以执行以下代码:
$password = password_hash('mypassword', PASSWORD_DEFAULT);
创建一个散列和加密的密码,除了存储到MySQL表格列之外,除了存储到MySQL表格列之外,什么都不需要做什么呢?
答案 0 :(得分:3)
password_hash
生成salt和hash。 然后将它们合并为一个字符串,因此您不必像通常那样单独存储它们。
这也是password_verify
只接受两个参数的原因:密码以及salt和hash的组合。
不建议生成自己的盐,因为你可能做错了。例如,您可以通过生成可预测的字符串或使其太短来创建错误的字符串。另外,因为password_hash
函数已经这样做了,为什么还要麻烦?如果用户更改了密码,那么通常会重新生成散列和salt。
答案 1 :(得分:0)
是。然后,您可以检索它并使用password_verify()来检查用户提供的密码是否与存储的哈希相匹配。