password_hash()
和 password_verify()
是 PHP 中用于处理密码散列和验证的内置函数。这两个函数使用 bcrypt 算法,并允许您设置不同的选项来定制散列过程。以下是如何使用这两个函数的示例:
password_hash()
函数散列密码:$password = 'your_desired_password';
// 可选的选项数组
$options = [
'cost' => 10, // 计算哈希的成本(时间)
'memory_cost' => 16384, // 散列过程中使用的内存量
'time_cost' => 3, // 计算哈希所需的时间
'threads' => 1, // 并行执行线程数
'salt_length' => 64, // 生成的盐的长度
];
// 使用 bcrypt 对密码进行散列
$hashed_password = password_hash($password, PASSWORD_BCRYPT, $options);
echo "Hashed password: " . $hashed_password;
password_verify()
函数验证用户输入的密码:$user_input = 'user_input_password'; // 用户输入的密码
$stored_hashed_password = 'the_hashed_password_from_database'; // 从数据库中存储的散列密码
// 使用 bcrypt 验证用户输入的密码
$is_valid = password_verify($user_input, $stored_hashed_password);
if ($is_valid) {
echo "Password is valid!";
} else {
echo "Password is not valid!";
}
在这个示例中,我们首先使用 password_hash()
函数对密码进行散列,同时设置了一些选项来定制散列过程。然后,我们使用 password_verify()
函数验证用户输入的密码是否与存储在数据库中的散列密码匹配。如果匹配,password_verify()
将返回 true
,否则返回 false
。