我对password_hash()函数有一点疑问,是否为我创建了一个ramdom salt?我的意思是我不必指定这样的东西:
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM)
因为我认为该功能会为密码的 EACH 创建一个随机且不同的盐?
另一个问题,如果我以这种方式在函数password_hash中使用PASSWORD_DEFAULT
:password_hash("rasmuslerdorf", PASSWORD_DEFAULT)
就像使用password_hash("rasmuslerdorf", PASSWORD_BCRYPT)
?
答案 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()生成随机盐 每个密码都是哈希。这是预期的操作模式。