我正在进行我的网站身份验证,并且正在考虑使用bcrypt并随机创建存储在数据库上的用户登录行中的salt。我希望我的网站速度很快但是使用15来生成(大约需要1秒)的任何东西都太慢了所以我想在5-14之间随机生成一个盐,但是这样安全还是有更好的方法?< / p>
如果有帮助,我正在使用py-bcrypt。
答案 0 :(得分:4)
使用bcrypt的一个主要原因是需要大量的CPU时间来计算哈希值来防止暴力攻击。对于你的问题,我会使用一个恒定长度的盐,但随机值,这样每个密码需要相同的时间来计算。
通过这种方式,您可以将您的盐的长度和拉伸迭代的次数提供给您认为足够安全的任何东西,但我个人希望确保哈希至少花费1/2秒来生成一个非常强大的服务器。< / p>
答案 1 :(得分:3)
好的,所以似乎盐长度和工作因素是相关的。 bcrypt已经相当安全,但问题是无论你使用什么样的哈希,密码强度本身至少同样重要。因此,您应该尝试以最低成本(强度)为12来尽可能在服务器上处理。
请注意,加密安全但快速且安全;通常需要重新接种RNG,否则你可能会用完随机数。
更加谨慎:确保密码具有足够的强度。找到密码“密码”根本不需要时间,即使使用bcrypt。
不,没有更好的方法,除了找到更快的密码散列实现。攻击者将使用当然可以找到的最快的实现。