比较散列密码以验证密码是否匹配

时间:2015-04-18 08:49:07

标签: php security hash blowfish

我使用blowfish方法在用户注册时对用户的密码进行哈希处理。

在注册表单中,有“输入密码”框和“确认密码”框。

因此,为了检查密码是否匹配,我使用散列版本进行比较。但是,它似乎并不匹配。

请参阅以下代码......

从超级全局变量中获取值并对其进行哈希处理。

$hashed_password = password_encrypt($_POST['password']);
$conf_hashed_password = password_encrypt($_POST['conf_password']);

调用函数

 passwords_match_check($hashed_password, $conf_hashed_password);

定义的功能

function passwords_match_check($hashed_pw, $conf_hashed_pw){
    global $errors;
    if($conf_hashed_pw != $hashed_pw){
        $errors['pws_no_match'] = "Passwords do not match";
    }

}

这段代码总是说密码不匹配,即使我知道密码是相同的......

那么,我哪里出错......?

是否可以,如果我只使用没有散列的值进行比较?

2 个答案:

答案 0 :(得分:2)

只需使用password_hash()password_verify()(两者都包含在php 5.5+中)。如果您使用的是5.3 - 5.5,请使用password-compat向后兼容性库。

自定义password_encrypt()功能不是必需的,并且很可能不如内置功能安全。所以只需使用内置的。

答案 1 :(得分:0)

除非你分享了password_encrypt功能,否则很难说。 如果该方法唯一地加密加密,则两个哈希值都将不同。

(可能是你检查失败的原因。) 为什么不检查原始输入而不是散列?