加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 试图理解Ruby on Rails中的salting和散列密码

发布时间:2020-12-17 03:44:54 所属栏目:百科 来源:网络整理
导读:我正在浏览Michael Hartl的书(真棒,免费资源,顺便说一下,谢谢迈克尔!)我有一个关于盐渍和哈希密码的问题.腌制密码的目的是防止黑客进行彩虹攻击,如果我理解正确的话,如果黑客可以猜测所使用的加密类型,则基本上是强力攻击.为了防止这种攻击,使用salt在密码
我正在浏览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"

非常感谢!

解决方法

不,彩虹攻击与蛮力攻击不同.

您可以将彩虹表视为字符串及其哈希值的大型数据库.当有人访问您的数据库时,他们可以将passwordhash与rainbow表中的密码进行比较并轻松获取密码.

盐通过向密码添加额外位来防止这种情况.如果盐足够长,则散列将不在彩虹表中.

使用蛮力攻击时,你必须计算哈希值,而彩虹攻击时,你已经拥有哈希值.

所以,是的,当有人访问您的数据库时,他们也可以获得您的盐.但是,如果它是每个记录的唯一一个并不重要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读