gpt4 book ai didi

ruby-on-rails - 尝试理解 Ruby on Rails 中的加盐和散列密码

转载 作者:行者123 更新时间:2023-12-04 23:08:47 25 4
gpt4 key购买 nike

我正在浏览 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"

非常感谢!

最佳答案

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

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

盐通过在密码中添加额外的位来防止这种情况。如果盐足够长,则哈希不会在彩虹表中。

使用蛮力攻击时,您必须计算哈希值,而使用彩虹攻击时,您已经有了哈希值。

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

关于ruby-on-rails - 尝试理解 Ruby on Rails 中的加盐和散列密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com