Bcrypt,盐和成本是什么意思?

时间:2014-08-30 19:37:55

标签: encryption zend-framework2 bcrypt

我一直使用MD5来加密密码,但我读到它不应再使用,而是使用bcrypt ..

我正在使用zendframework 2,我发现它描述了bcrypt配置如下:

$bcrypt = new Bcrypt(array(
    'salt' => 'random value',
    'cost' => 11
));

什么是盐,成本是多少?他们怎么可以用呢?

1 个答案:

答案 0 :(得分:12)

salt是随机文本添加到要散列的字符串中。例如,您不哈希my_secret_password;哈希像1jfSLKe$*@SL$#)(Sslkfs$34:my_secret_password这样的东西。这样做的原因是,即使整个散列密码数据库被盗,也很难设置一个“彩虹表”来强制密码。如果每个密码都有不同的盐,那么只会猜到最弱的密码(比如“密码”或“123456”,你应该禁止它们)。

成本衡量运行哈希的次数 - 它的速度有多慢。你希望它变慢。同样,如果散列密码被盗,这是一个冗余的安全层。它使暴力逼迫任何东西都非常昂贵。

您可以在此处阅读详细说明:https://security.stackexchange.com/a/51983/35405