关于password_hash()的问题

时间:2015-04-29 12:57:35

标签: php security hash passwords bcrypt

我对password_hash()函数有一点疑问,是否为我创建了一个ramdom salt?我的意思是我不必指定这样的东西:

'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM)  

因为我认为该功能会为密码的 EACH 创建一个随机且不同的盐?

另一个问题,如果我以这种方式在函数password_hash中使用PASSWORD_DEFAULTpassword_hash("rasmuslerdorf", PASSWORD_DEFAULT)就像使用password_hash("rasmuslerdorf", PASSWORD_BCRYPT)

4 个答案:

答案 0 :(得分:1)

自动生成Salt,但您可以在选项中指定自己的Salt。 从PHP 5.5开始,默认算法是BCRYPT,但它可以随时间改变。

答案 1 :(得分:1)

password_hash() 会在每次调用时自动生成随机盐,除非您在第三个参数中手动指定一个, $ options

PASSWORD_DEFAULT 等同于PHP 5.5中的 PASSWORD_BCRYPT ,但将来可能会发生变化。 您不应该假设PASSWORD_DEFAULT将始终在PHP的未来版本中使用bcrypt算法

答案 2 :(得分:1)

来自diff -

  

如果省略,则每个密码哈希值都会通过password_hash()生成随机盐。这是预期的操作模式。

此外(您的第二个问题)更多来自the very fine manual -

  

PASSWORD_DEFAULT(整数)

     

如果未提供算法,则用于散列的默认算法。当支持更新,更强大的哈希算法时,这可能会在较新的PHP版本中发生变化。

     

...

     

此常量的值:

     

PHP 5.5.0 - PASSWORD_BCRYPT

答案 3 :(得分:0)

根据文档,如果你没有指定任何盐,它每次都会生成一个随机的:

  

salt - 在散列密码时手动提供盐。   请注意,这将覆盖并防止盐的存在   自动生成。

     

如果省略,将通过password_hash()生成随机盐   每个密码都是哈希。这是预期的操作模式。

http://php.net/manual/en/function.password-hash.php