我正在浏览 Michael Hartl 的书(真棒,免费资源,顺便说一句,谢谢 Michael!)我有一个关于加盐和散列密码的问题。加盐密码的目的是防止黑客执行彩虹攻击,如果我理解正确的话,如果黑客能够猜出所使用的加密类型,这基本上是一种蛮力攻击。为了防止这种攻击,在加密之前使用盐来随机化密码,但是盐必须与加密密码一起存储?如果是这样,那么如果黑客可以访问数据库并检索加密密码,那么他们不能也检索盐并继续进行彩虹攻击吗?
这是迈克尔的流程代码示例......
>> Time.now.utc
=> Fri Jan 29 18:11:27 UTC 2010
>> password = "secret"
=> "secret"
>> salt = secure_hash("#{Time.now.utc}--#{password}")
=> "d1a3eb8c9aab32ec19cfda810d2ab351873b5dca4e16e7f57b3c1932113314c8"
>> encrypted_password = secure_hash("#{salt}--#{password}")
=> "69a98a49b7fd103058639be84fb88c19c998c8ad3639cfc5deb458018561c847"
非常感谢!