4
我看到config/initializers/devise.rb中有一个名为“config.stretches”的配置。我不明白stretches
是什么意思。它说,这是我想要密码“重新加密”的时代。为什么我们的密码将被重新加密?为什么我应该指定一个“时代”?设计的database_authenticatable的“延伸”是什么意思?
我看到config/initializers/devise.rb中有一个名为“config.stretches”的配置。我不明白stretches
是什么意思。它说,这是我想要密码“重新加密”的时代。为什么我们的密码将被重新加密?为什么我应该指定一个“时代”?设计的database_authenticatable的“延伸”是什么意思?
简短的回答是,它使暴力字典攻击需要更长的时间。
This blog post是用合理的英文写的,可能会让你更好地了解正在发生的事情。
感谢您的回答。那篇文章对我来说有点难,我还是不明白,对不起。为什么你说它可以使攻击需要更长的时间?如果我将它重置为100,会发生什么? – Freewind 2010-07-03 07:01:11
然后它需要10倍的工作来计算你的密码散列值。这一点就是生成密码哈希值很昂贵。当你只需要1(就像有人登录时),那么没什么大不了的。你不会注意到额外的时间。你正试图让某人在合理的时间内进行字典攻击更令人讨厌/不可能。他们需要产生大量的哈希,所以越慢越好(对于你而不是他们)。 – jdl 2010-07-03 08:02:38
维基百科在这个话题上有一篇体面的文章。我不相信bcrypt正在做这个(我不明白bcrypt算法在任何程度上),但这个想法是一样的。 http://en.wikipedia.org/wiki/Key_stretching – jdl 2010-07-03 08:05:47