Lwi*_*yat 3 php password-hash php-password-hash
我尝试使用password_hash() PHP函数来哈希用户密码.但是,它的功能是工作哈希,而不是常量.
<?php
echo password_hash('a',PASSWORD_BCRYPT,array(
'cost' => 12
));
?>
Run Code Online (Sandbox Code Playgroud)
1. $2y$12$SRmipqM7AsYkx3Xc8QGHNex69rGXeVyWGTYrh9T8sh1cP3UrdjfQi
2. $2y$12$zx.GUgtcake3wMfl3/YXXeG1.8mmHKyRruL3nWj8OmA.RbEYqeW6u
3. $2y$12$XQtmFplcehkgWLbGrOUsNOlXDU/NGrwZlt3HM88hLbUHXhjXNF4km
4. $2y$12$q9/OSZdDJw7af4Hw4MGlHeY7UMtWr9/Cj0nj/N6PaoilNoUBePt7O
Run Code Online (Sandbox Code Playgroud)
有些人建议使用MD5,不要用它来进行密码散列.
那么现在回答你的问题 how to check a password matches
Password_Hash()是生成一个密码哈希,它会随之创建一个随机盐,这个哈希将在哈希时使用.你的最终结果将是:salt + hash,但是你可以salt在它的选项中使用这个方法给它一个但是让它保持它自己做它.
Password_Verify()使用密码参数和散列密码.正如我之前所说的,散列密码是salt + hash,这是有意义的,Password_Verify()只需要这些而不是另外一个被调用的salt
所以会发生的Password_Verify()是它取出盐并Password_Hash()与盐一起使用.然后检查接收的散列是否等于给定的散列.如果它匹配那么它是真的,否则它是假的.
更新18-04-2018(dmY)
警告
自PHP 7.0.0起,salt选项已被弃用.
现在优选简单地使用默认生成的盐.
为什么不使用MD5进行密码散列-SO回答:Silverlightfox