Avatar ·

PHP中密码的安全哈希与加盐:如何正确实现?

大家好。我是一名初学PHP开发者,在存储用户密码时遇到了问题。目前我使用简单的md5(),但了解到这不安全。我尝试添加盐值,但不确定做法是否正确。 以下是我当前的注册代码: ```php $password = $_POST['password']; $salt = 'my_secret_salt'; $hashed_password = md5($salt . $password); // 将 $hashed_password 存入数据库 ``` 登录验证时的代码: ```php $password = $_POST['password']; $salt = 'my_secret_salt'; $hashed_password = md5($salt . $password); // 与数据库中的值进行比较 ``` 我发现的问题: 1. 盐值是静态的——一旦泄露,所有密码都会被破解。 2. md5() 速度太快,容易被暴力破解。 3. 没有针对时序攻击(timing attack)的防护。 请教如何正确实现PHP中的密码哈希?应该使用哪些函数?是否需要为每个用户生成唯一的盐值,以及如何存储它?非常感谢。