Bea*_*red 4 encryption ruby-on-rails saltedhash
我正在浏览Michael Hartl的书(真棒,免费资源,顺便说一下,谢谢迈克尔!)我有一个关于盐渍和哈希密码的问题.腌制密码的目的是防止黑客进行彩虹攻击,如果我理解正确的话,如果黑客可以猜测所使用的加密类型,那么基本上就是暴力攻击.为了防止这种攻击,使用salt在密码加密之前随机化密码,但该密码必须与加密密码一起存储?如果是这样,那么如果黑客可以访问数据库并检索加密密码,那么他们是否也无法检索盐并继续进行彩虹攻击?
这是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"
Run Code Online (Sandbox Code Playgroud)
非常感谢!
不,彩虹攻击与蛮力攻击不同.
您可以将彩虹表视为字符串及其哈希值的大型数据库.当有人访问您的数据库时,他们可以将passwordhash与rainbow表中的密码进行比较并轻松获取密码.
盐通过向密码添加额外位来防止这种情况.如果盐足够长,则散列将不在彩虹表中.
使用蛮力攻击时,你必须计算哈希值,而彩虹攻击时,你已经拥有哈希值.
所以,是的,当有人访问您的数据库时,他们也可以获得您的盐.但是,如果它是每个记录的唯一一个并不重要.
| 归档时间: |
|
| 查看次数: |
2809 次 |
| 最近记录: |