比较散列密码以验证密码是否匹配
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()
函数不是必需的,而且很可能不如内置函数安全。所以只使用内置的。
我使用 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()
函数不是必需的,而且很可能不如内置函数安全。所以只使用内置的。