Bcrypt,你如何用随机盐验证?

时间:2016-03-26 15:09:01

标签: php hash salt bcrypt

我从PHP网站上获得了这段代码。我可以在没有Salt的情况下完成这项工作。但是你如何用盐验证 - 或者它是否必须存储到变量中然后你以后使用它?不确定如何进行下一步验证。关于如何制作哈希,但要验证的大量教程是另一回事。谢谢。

$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";


// See the password_hash() example to see where this came from.
$hash = '$2y$11$nJp/w0OC41I0m44T9OQKBuWUrQi63PrJuvDc68KI6oDBdnZK01kiW ';

if (password_verify('rasmuslerdorf', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}

1 个答案:

答案 0 :(得分:2)

  

请注意,password_hash()返回算法,cost和salt作为返回哈希的一部分。因此,验证散列所需的所有信息都包含在其中。这允许验证函数验证散列,而无需为salt或算法信息单独存储。

来源:http://php.net/manual/en/function.password-verify.php

只需使用上面的功能,就会自动检测到盐。

  

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

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

即使您没有添加盐,password_hash也会自动添加随机生成的密码,因此您在验证已加密的密码时不会遇到任何问题。

另请注意:

  

自PHP 7.0.0起,salt选项已被弃用。现在最好只使用默认生成的盐。