Avatar ·

如何在 PHP 中正确使用 bcrypt 进行密码哈希?

大家好!我是一名 PHP 新手开发者,一直搞不清楚如何安全地存储密码。目前我只是用 md5() 或 sha1() 函数进行哈希,但我在某处读到这是错误且不安全的做法。据说应该使用 bcrypt。

<?php
// 我当前的代码(我知道这很糟糕)
$password = 'my_secret_pass';
$hash = md5($password);
// 将 $hash 保存到数据库

// 登录时验证
if (md5($_POST['password']) == $hash_from_db) {
    echo "登录成功!";
}
?>

我听说过 bcrypt,但不知道如何安装和使用它。好像 PHP 有某个内置函数,但我不知道它叫什么名字以及如何正确使用。另外,我困惑的是需要指定“salt”(盐)——这是什么,以及应该存储在哪里?是否需要为每个密码生成新的盐?然后在用户登录时如何验证密码?

请逐步指导我,谢谢!