Php 从crackstation.net实现密码哈希/盐析算法

Php 从crackstation.net实现密码哈希/盐析算法,php,security,passwords,hash,salt,Php,Security,Passwords,Hash,Salt,我正在尝试从中实现密码哈希/盐析算法,但我不确定如何实现它 在用户注册时存储密码似乎与将密码传递到create_hash()中一样简单 我不知道如何在用户登录时进行验证。validate_password($password,$good_hash)返回true或false,并将$password作为参数,因此除了第二个参数$good_hash之外,它似乎是一个简单的参数。这个参数是从哪里来的 据我所知,每次使用密码时,密码都会转换为散列值,而散列值就是存储和比较的内容。那么为什么我会同时拥有$p

我正在尝试从中实现密码哈希/盐析算法,但我不确定如何实现它

在用户注册时存储密码似乎与将密码传递到create_hash()中一样简单

我不知道如何在用户登录时进行验证。validate_password($password,$good_hash)返回true或false,并将$password作为参数,因此除了第二个参数$good_hash之外,它似乎是一个简单的参数。这个参数是从哪里来的

据我所知,每次使用密码时,密码都会转换为散列值,而散列值就是存储和比较的内容。那么为什么我会同时拥有$password和$good_散列值呢

功能的快速概述:

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){
}
当然,另一种更好的方法也同样有用。
谢谢

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

我假设$good_hash是存储的哈希密码,$password是为登录而提交的原始密码。请使用两个PBKDF2注释:首先,使用具有尽可能高的迭代次数,并在峰值负载期间保持足够的性能。其次,不要要求输出长度超过本机散列(SHA-1为20字节,SHA-224为28字节,SHA-256为32字节,SHA-384为48字节,SHA-512为64字节)。另一种方法是password_hash()和password_verify(),从5.5和5.3.7开始在PHP中提供,每个都有一个兼容库。因此,我只需检索存储在db中的哈希,并使用从$\u POST获得的原始密码传递它。很明显,孩子,我现在觉得自己很傻。
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){
}