最佳的bcrypt工作因子

什么是密码散列理想的bcrypt工作因子。

如果我使用10的因子,我的笔记本电脑上的密码大约需要1秒。 如果我们结束了一个非常繁忙的网站,那么只需要检查人们的密码就可以完成很多工作。

也许最好是使用7的工作因子,将每个笔记本电脑login的总密码散列工作减less到大约.01s?

你如何决定powershell安全和运营成本之间的权衡?

请记住,该值存储在密码: $2a$(2 chars work)$(22 chars salt)(31 chars hash) 。 这不是一个固定的价值。

如果你发现负载太高,那么下次login时就会这样做,你就可以更快地计算出来。 同样,随着时间的推移,你会得到更好的服务器,如果负载不是问题,你可以在login时升级哈希的强度。

诀窍是随着摩尔定律一直保持与未来相同的时间。 数字是log2,所以每次计算机加倍速度,加1到默认数字。

决定你想多长时间来强制用户的密码。 例如,对于一些常见的词典单词,您的帐户创build可能已经警告过他们的密码较弱。 如果是1000个常用单词中的一个,比如说,攻击者需要0.1s来testing每个单词,那么它们会购买100s(好吧,有些单词更常见…)。 如果用户select了“常用字典单词”+ 2个数字,那就是两个多小时。 如果您的密码数据库被盗用,并且攻击者一天只能获得几百个密码,那么您已经购买了大部分用户几个小时或几天来安全地更改密码。 这是一个买他们的时间的问题。

http://www.postgresql.org/docs/8.3/static/pgcrypto.html有一些破解密码供您考虑。; 当然,他们列出的密码是随机的。 字典中的单词…实际上,您不能保存密码为12345的人。