PHP 中的 $2y$10,PHP 字符串加密函数 password_hash
在PHP中,$2y$10
是password_hash()
函数使用的Blowfish算法的cost参数的一个示例。这个参数决定了散列密码的计算成本,也就是生成散列值所需要的计算时间。这个值越高,生成散列值所需的时间就越长,这有助于减少暴力破解密码的可能性。
password_hash()
函数用于创建密码的散列值。这是一个内置的PHP函数,可以用于生成密码散列值,并且还可以在将来验证密码时使用。
以下是一个使用password_hash()
函数的示例:
<?php
// 创建一个密码的散列值
$hash = password_hash("myPassword", PASSWORD_DEFAULT);
echo $hash; // 输出类似于:$2y$10$VGV4YVNv.gBQhV9XU2l4ejh4.NhgKasJE0gJKKvQvNe8u9RKHVKy
?>
在上面的代码中,PASSWORD_DEFAULT
是用来指定使用的密码散列算法的。在PHP 7.y中,这通常会使用Blowfish算法,并且cost参数会自动设置为10(在某些系统上可能是11或更高)。
如果你需要自定义cost参数,可以这样做:
<?php
// 创建一个密码的散列值,指定cost参数为12
$hash = password_hash("myPassword", PASSWORD_DEFAULT, ["cost" => 12]);
echo $hash; // 输出类似于:$2y$12$VGV4YVNv.gBQhV9XU2l4ejh4.NhgKasJE0gJKKvQvNe8u9RKHVKy
?>
在这个例子中,cost参数被设置为12。
最后,要验证用户输入的密码是否与散列值匹配,可以使用password_verify()
函数:
<?php
$hash = '$2y$10$VGV4YVNv.gBQhV9XU2l4ejh4.NhgKasJE0gJKKvQvNe8u9RKHVKy';
$inputPassword = "myPassword";
// 验证密码
if (password_verify($inputPassword, $hash)) {
echo "密码匹配";
} else {
echo "密码不匹配";
}
?>
在这个例子中,如果用户输入的密码与散列值匹配,password_verify()
函数将返回true
,否则返回false
。
评论已关闭