Juk*_*dan 0 php mysql hash salt
所以我正在学习PHP并正在登录页面.我已经想出如何使用SHA256注册一个新用户来哈希$ salt + $密码.我知道有更慢的加密方法,如bcrypt,但出于学习目的,我只是使用SHA256.我的问题是,使用它加密后:
function HashPassword($password) {
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
$hash = hash("sha256", $salt . $password); column
$final = $salt . $hash;
return $final;
}
Run Code Online (Sandbox Code Playgroud)
使用预处理语句,从数据库中检索哈希密码的最佳方法是什么,所以我可以使用这样的函数验证它?
function ValidatePassword($password, $hash_pass) {
$salt = substr($hash_pass, 0, 64);
$trueHash = substr($hash_pass, 64, 64);
$reHash = hash("sha256" , $salt . $password);
return $reHash == $trueHash;
}
Run Code Online (Sandbox Code Playgroud)
原则是您无法检索密码; 相反,您使用相同的HashPassword函数来计算密码尝试的哈希值,然后查询数据库以查找匹配的记录.
编辑
再看一下你的HashPassword函数,我意识到你不想在其中生成随机盐,而是$salt作为一个参数; 您将根据需要传入现有数据库记录中的值,或者传入随机生成的值.
| 归档时间: |
|
| 查看次数: |
3034 次 |
| 最近记录: |