繁体   English   中英

使用隐窝和河豚散列密码

[英]hashing password using crypt and blowfish

我有一个注册页面,用户输入密码,因此我对该密码进行了哈希处理,并在数据库中对其进行了哈希处理

但是当我尝试登录时,给我密码不匹配,当我回显它时,密码不匹配,就像我写了一个新密码

如何解决这个问题,有人可以帮助我吗?

寄存器中的cryptpass函数

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);    

登录时使用crypt函数

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;

将密码盐与存储的密码进行哈希运算时,密码盐必须相同。 通常,当用户注册/更改密码时,您的代码会生成随机盐。 然后以某种您可以识别的方式将其与哈希密码一起存储在数据库中。 然后,当需要验证用户输入时,可以使用该盐重新加密密码。

哈希之前您添加到密码中的盐每次必须相同。

我建议您创建一个每次使用的任意常量,而不是生成随机盐。

$salt = '@#$JASasdjbh&*()';

而且,当然,您应该在自己的脚本中使用它们之前更改这些字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM