【发布时间】:2012-10-13 18:54:50
【问题描述】:
对不起,如果这是一个愚蠢的问题,我只想知道:bcrypt 中的盐有什么意义?我的意思是,如果您有以下代码用于从密码创建哈希:
function generateSalt() {
$salt = '$2a$13$';
$salt = $salt . '1111111111111111111111';
return $salt;
}
function generateHash($salt, $password) {
$hash = crypt($password, $salt);
return $hash;
}
$salt = generateSalt();
$providedPassword = generateHash($salt, rand(3,29));
echo $providedPassword;
上面的输出例如:
$2a$13$111111111111111111111uDdpsIcwCVOwEyNueskXkniY5206fW
$2a$13$111111111111111111111udcvrNt9quPukFRl8./jXRzDGfE9lw0W
因此您可以清楚地看到盐的结束位置,如果有人获得了数据库,盐就没有意义,因为他们可以删除盐部分并仅搜索散列密码。那么,我使用 bcrypt 错了吗? (静态盐只是为了显示它在我的哈希中出现的位置),或者这有什么原因?
【问题讨论】: