我一直使用MD5来加密密码,但我读到它不应再使用,而是使用bcrypt ..
我正在使用zendframework 2,我发现它描述了bcrypt配置如下:
$bcrypt = new Bcrypt(array(
'salt' => 'random value',
'cost' => 11
));
什么是盐,成本是多少?他们怎么可以用呢?
答案 0 :(得分:12)
salt是随机文本添加到要散列的字符串中。例如,您不哈希my_secret_password
;哈希像1jfSLKe$*@SL$#)(Sslkfs$34:my_secret_password
这样的东西。这样做的原因是,即使整个散列密码数据库被盗,也很难设置一个“彩虹表”来强制密码。如果每个密码都有不同的盐,那么只会猜到最弱的密码(比如“密码”或“123456”,你应该禁止它们)。
成本衡量运行哈希的次数 - 它的速度有多慢。你希望它变慢。同样,如果散列密码被盗,这是一个冗余的安全层。它使暴力逼迫任何东西都非常昂贵。
您可以在此处阅读详细说明:https://security.stackexchange.com/a/51983/35405