正如一些人建议使用 MD5 一样,不要将其用于密码哈希。
现在回答你的问题how to check a password matches
Password_Hash()
是生成一个密码散列,这将用它创建一个随机盐,该散列将在散列时使用。
你的最终结果是:盐+哈希,however你可以给它一个salt
在它的选项中使用此方法,但让我们保留它自己执行的操作。
Password_Verify()
使用一个参数作为密码,一个参数作为散列密码。
正如我之前所说,哈希密码是 salt+hash
这是有道理的Password_Verify()
只需要这些而不需要额外的调用salt
那么会发生什么Password_Verify()
是它取出盐并使用Password_Hash()
用那个盐。
然后检查接收到的哈希值是否等于给定的哈希值。
如果匹配则为 true,否则为 false。
Password_Hash() 文档 http://php.net/manual/en/function.password-hash.php
Password_Verify() 文档 http://php.net/manual/en/function.password-verify.php
更新日期 18-04-2018(日-月-年)
WARNING
盐选项已已弃用 as of PHP 7.0.0.
现在最好只使用默认生成的盐。
有关盐腌的更多信息 - SO Answer 下面由 Veve https://stackoverflow.com/a/28626635/3504247
为什么不使用 MD5 进行密码哈希 - PHP 常见问题解答 http://php.net/manual/en/faq.passwords.php#faq.passwords.fasthash
为什么不使用 MD5 进行密码哈希 - SO 答案:Silverlightfox https://stackoverflow.com/a/30502701/3504247