2

我正在尝试从crackstation.net实现密码散列/加盐算法,但我不确定如何实现它。

在用户注册时存储密码似乎就像将密码传递给 create_hash() 一样简单。

$password = create_hash($_POST['Password'];

我没有关注如何在用户登录时进行验证。validate_password($password, $good_hash) 返回 true 或 false,并以 $password 作为参数,所以除了第二个参数 $good_hash 之外,它看起来很简单。这个参数来自哪里?

据我了解,每次使用密码时都会将其转换为哈希值,并且哈希值是存储和比较的内容。那么为什么我会同时拥有 $password 和 $good_hash 值呢?

功能概览:

function create_hash($password){
    calls pbkdf2()
}

function validate_password($password, $good_hash){ 
    calls pbkdf2() 
    calls slow_equals() 
}

function slow_equals($a, $b){
}

function pbkdf2($algorithm, $password, $salt, $count, $key_length, $raw_output = false){
}

当然,另一种更好的方法也同样有帮助。谢谢

4

1 回答 1

2

good_hash此时已存储在数据库中,是已知的“好哈希”。从数据库中检索它并将其与password已提交的用户进行比较,该用户现在已使用相同的算法进行哈希处理。

于 2012-07-11T03:17:27.763 回答