2017-06-16 39 views
0

我正在使用以下PHP代码来散列用户的密码。PHP中的password_hash()

$options = [ 
'cost' => 10, 
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM), 
]; 

$hash = password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options); 

此方法是否安全?密码是否被盐渍?

+3

用于文档['password_hash()'](http://php.net/manual/en/function .password-hash.php)**特别说** ___不要组成你自己的SALT___除非你是一个加密专家,否则你不会像功能那样做一个好的工作。此外,创建自己的SALT的能力已被弃用(即将被删除),所以为什么还要编写不会很快运行的代码! – RiggsFolly

+0

*“此方法是否安全?密码是否被盐渍?”* - 简短回答:是的。较长的回答:咨询问题已关闭的重复项。如果您仍然不确定,请不要使用它,也不要上网。 –

+0

请注意,在PHP 7.0.0中,salting已弃用*“** Warning **从PHP 7.0.0开始不推荐使用salt选项,现在最好只使用默认生成的salt。”*按照http://php.net/manual/en/function.password-hash.php –

回答

0

在大多数情况下,最好省略salt参数。如果没有这个参数,该函数将从操作系统的随机源生成一个加密安全的盐。

价:php.net/manual/en/function.password-hash.php#111620

+0

虽然是正确的,但这是一个弱的答案。 –

+0

这也直接从用户提供的说明提供的手册中引用http://php.net/manual/en/function.password-hash.php#111620 - 你应该说明了这一点。编辑:这个评论按原来的帖子https://stackoverflow.com/revisions/44587681/1 –

+0

那么与盐一起传递的'成本'呢? –