【发布时间】:2011-10-13 12:44:37
【问题描述】:
Coda Hale 的文章 "How To Safely Store a Password" 声称:
bcrypt 内置了盐以防止彩虹表攻击。
他引用了this paper,这说明在OpenBSD 的bcrypt 实现中:
OpenBSD 从 arcfour 生成 128 位 bcrypt salt (arc4random(3)) 密钥流,用随机数据播种到内核 从设备计时中收集。
我不明白这是怎么回事。在我对盐的概念中:
- 每个存储的密码都需要不同,因此必须为每个密码生成单独的彩虹表
- 它需要存储在某个地方以便可重复:当用户尝试登录时,我们会尝试输入他们的密码,重复我们最初存储密码时所做的相同的盐和哈希过程,然后比较李>
当我使用带 bcrypt 的 Devise(Rails 登录管理器)时,数据库中没有 salt 列,所以我很困惑。如果盐是随机的并且没有存储在任何地方,我们如何可靠地重复哈希过程?
简而言之,bcrypt 怎么能有内置的 salts?
【问题讨论】:
标签: security hash internals bcrypt