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

Compare hashed password to validate if passwords are matched

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

在注册表单中,有"Enter Password"框和"Confirm Password"框。

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

请看下面的代码...

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

$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";
    }

}

此代码总是提示密码不匹配,即使我知道密码相同...

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

如果我只是使用没有散列的值来比较,可以吗?

除非你共享password_encrypt功能,否则很难说。 如果该方法唯一地为加密提供种子,则两个哈希将不同。

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

只需使用 password_hash() and password_verify() (both included in php 5.5+). And if you're on 5.3 - 5.5, use password-compat 向后兼容库。

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