我使用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";
}
}
这段代码总是说密码不匹配,即使我知道密码是相同的......
那么,我哪里出错......?
是否可以,如果我只使用没有散列的值进行比较?
答案 0 :(得分:2)
只需使用password_hash()
和password_verify()
(两者都包含在php 5.5+中)。如果您使用的是5.3 - 5.5,请使用password-compat向后兼容性库。
自定义password_encrypt()
功能不是必需的,并且很可能不如内置功能安全。所以只需使用内置的。
答案 1 :(得分:0)
除非你分享了password_encrypt功能,否则很难说。 如果该方法唯一地加密加密,则两个哈希值都将不同。
(可能是你检查失败的原因。) 为什么不检查原始输入而不是散列?