我在 config/initializers/devise.rb 中看到,有一个名为“config.stretches”的配置。
# ==> Configuration for :database_authenticatable
# For bcrypt, this is the cost for hashing the password and defaults to 10. If
# using other encryptors, it sets how many times you want the password re-encrypted.
config.stretches = 10
我不明白
stretches
是什么意思。它说这是我想要“重新加密”密码的时间。为什么我们的密码会被重新加密?为什么我要指定一个“次”?
简短的回答是,它使得暴力字典攻击需要更长的时间。
这篇博文是用相当简单的英语写成的,可能会让您更好地了解正在发生的事情。
虽然@jdl 的答案已被接受,但它确实不是用简单的英语写的,也不是我能更好理解的。 此链接帮助我更好地了解伸展运动
如果您使用 bcrypt 并创建大量用户(例如,如果您使用 Factory Bot 或 Machinist),这将显着提高性能。密钥拉伸是一种以牺牲速度为代价来提高密码安全性的方法。
为了更深入地了解,您可以查看 wiki 上的 keystretch