使用BCrypt,并生成盐

时间:2013-01-16 06:55:38

标签: php salt encryption bcrypt

SO。

我想将BCrypt用于我的用户身份验证表单。 我可以使用代码注册用户

<?php
$salt = '$2a$07$R.gJb2U2N.FmZ4hPp1y2CN$';
crypt("secretpassword", $salt);
?>

这里不使用恒定的盐。我想用

生成随机盐
// Posted Code from http://pastebin.com/wLxDEhD7.
$Allowed_Chars =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./';
$Chars_Len = 63;
$salt = "";
for($i=0;$i<45 ;$i++)
{
    $salt .= $Allowed_Chars[mt_rand(0,$Chars_Len)];
}

并将其存储到数据库中。直到这个我很清楚(我希望:D) 接下来我需要的是在用户登录时检查密码。 为此,我需要用户的输入数据,即该用户使用的盐。

crypt("secretpassword", $salt);

我可以获得用户输入,但我怎么知道已使用的盐? 我不清楚这一点。

已经从phpmaster.com和http://pastebin.com/wLxDEhD7复制了代码(来自SO上提出的问题,我无法再找到问题) 这纯粹用于教育目的。

1 个答案:

答案 0 :(得分:2)

salt存储在BCrypt生成的哈希中。所以这样做会有效:

$passwordIsOk = crypt($password, $hash) === $hash;