我是php新手!所以我有一个php文件来创建一个随机的临时密码和一个php文件来验证它并进行更改。
我的随机密码哈希函数是:
function hashSSHA($password) {
$salt = sha1(rand());
$salt = substr($salt, 0, 10);
$encrypted = base64_encode(sha1($password . $salt, true) . $salt);
$hash = array("salt" => $salt, "encrypted" => $encrypted);
return $hash;
}
我验证密码的功能是
function checkhashSSHA($salt, $password) {
$hash = base64_encode(sha1($password . $salt, true) . $salt);
return $hash;
}
所以在我的第一个php文件中,我以
开头$random_string = substr(str_shuffle(str_repeat("0123456789abcdefghijklmnopqrstuvwxyz", 6)), 0, 6);
$hash = hashSSHA($random_string);
$encrypted_temp_password = $hash["encrypted"];
$salt = $hash["salt"];
我将$ salt和$ encrypted_temp_password保存到临时表
所以我尝试使用以下逻辑验证密码
$hash = checkhashSSHA($salt, $db_encrypted_temp_password);
echo $hash;
// check for password equality
if ($db_encrypted_temp_password == $hash)
{
}
但是回音$hash
从$hash
$db_encrypted_temp_password
我尝试了password_verify()
但又没有结果。
那么如何让它验证临时密码?
谢谢。
答案 0 :(得分:0)
我按照Federkun的建议使用内置密码哈希
$options = array('salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),'cost' => 12,);
$hash = password_hash($password, PASSWORD_BCRYPT, $options);
$encrypted_password = $hash;
$salt = $options['salt'];
然后我用password_verify验证它似乎工作
谢谢