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表中的密码进行比较并轻松获取密码. 盐通过向密码添加额外位来防止这种情况.如果盐足够长,则散列将不在彩虹表中. 使用蛮力攻击时,你必须计算哈希值,而彩虹攻击时,你已经拥有哈希值. 所以,是的,当有人访问您的数据库时,他们也可以获得您的盐.但是,如果它是每个记录的唯一一个并不重要. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |