我有一个用户输入密码的注册页面,所以我将这个密码哈希并在数据库中进行哈希处理
但是当我尝试登录时,它给我的密码不匹配,当我回应它时,它与我写的新密码不匹配
如何解决这个问题任何人都可以帮助我???
function cryptPass($input, $rounds = 9)
{
$salt = "";
$saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9'));
for($i = 0; $i<22; $i++)
{
$salt .=$saltChars[array_rand($saltChars)];
}
return crypt($input, sprintf('$2y$%02d$', $rounds) . $salt);
}
$hashedpass = cryptPass($pass1);
function cryptPass($input, $rounds = 9)
{
$salt = "";
$saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9'));
for($i = 0; $i<22; $i++)
{
$salt .=$saltChars[array_rand($saltChars)];
}
return crypt($input, sprintf('$2y$%02d$', $rounds) . $salt);
}
$hashedpass = cryptPass($pass);
echo $hashedpass;
答案 0 :(得分:1)
密码盐在对存储的密码进行哈希处理时需要相同。通常,当用户注册/更改密码时,代码会生成随机盐。然后将它与散列密码一起存储在数据库中,以某种方式识别它。然后,在验证用户输入时,使用该盐重新哈希密码。
答案 1 :(得分:0)
在散列之前添加到密码的salt必须是相同的 时间。
我建议创建一个随意的盐,而不是生成随机盐 每次都使用的常量。
$salt = '@#$JASasdjbh&*()';
当然,您应该在使用自己的脚本之前更改这些字符。