我正在尝试从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){
}
当然,另一种更好的方法也同样有用。 谢谢
答案 0 :(得分:2)
good_hash
已存储在数据库中,并且是已知的好的哈希。"从数据库中检索它,并将其与提交的用户password
进行比较,该用户已使用相同的算法进行了哈希处理。