编程语言
首页 > 编程语言> > 每个字符串的PHP password_hash函数值都不相同

每个字符串的PHP password_hash函数值都不相同

作者:互联网

我尝试使用password_hash()PHP函数来哈希用户密码.但是,它的功能是工作哈希,而不是常量.

<?php 
    echo password_hash('a',PASSWORD_BCRYPT,array(
            'cost' => 12
         ));
?>

第4次测试时间的结果

1. $2y$12$SRmipqM7AsYkx3Xc8QGHNex69rGXeVyWGTYrh9T8sh1cP3UrdjfQi
2. $2y$12$zx.GUgtcake3wMfl3/YXXeG1.8mmHKyRruL3nWj8OmA.RbEYqeW6u
3. $2y$12$XQtmFplcehkgWLbGrOUsNOlXDU/NGrwZlt3HM88hLbUHXhjXNF4km
4. $2y$12$q9/OSZdDJw7af4Hw4MGlHeY7UMtWr9/Cj0nj/N6PaoilNoUBePt7O

解决方法:

有些人建议使用MD5,不要用它来进行密码散列.

那么现在回答你的问题如何检查密码匹配

Password_Hash()是生成一个密码哈希,它会随之创建一个随机盐,这个哈希将在哈希时使用.
你的最终结果将是:salt hash,但是你可以在它的选项中用这个方法给它一个盐但是让它保持它自己做它.

Password_Verify()使用密码参数和散列密码.
正如我之前所说,散列密码是盐哈希
有意义的是,Password_Verify()只需要这些,而不是另外一个叫做salt

所以Password_Verify()会发生什么,它取出盐并使用该盐的Password_Hash().
然后检查接收的散列是否等于给定的散列.
如果它匹配那么它是真的,否则它是假的.

Password_Hash() Doc

Password_Verify() Doc

更新18-04-2018(d-m-Y)

WARNING

The salt option has been deprecated as of PHP 7.0.0.

It is now preferred to simply use the salt that is generated by default.

More information about Salting – SO Answer below by Veve

Why not to use MD5 for Password Hashing – PHP FaQ Answer

Why not to use MD5 for Password Hashing – SO Answer by: Silverlightfox

标签:php,password-hash,php-password-hash
来源: https://codeday.me/bug/20190717/1489868.html