gpt4 book ai didi

ruby - 为什么 Ruby 的 bcrypt 库在散列中以明文形式包含盐?

转载 作者:数据小太阳 更新时间:2023-10-29 07:32:01 25 4
gpt4 key购买 nike

<分区>

我正在使用 Coda Hale 的 Ruby bcrypt library .我最近注意到它并没有像我想象的那样工作。我原以为正确的程序是:

  1. 生成盐
  2. 获取密码
  3. 连接盐和密码字符串
  4. 通过你的散列函数散列它们

但是,当我查看 bcrypt 函数的结果时,似乎将 salt 连接到 hash 而不是 password。那就是盐连接发生在步骤#4 之后,而不是之前。我假设 Coda Hale 这样做是正确的,但我想知道为什么它会这样。

这是一个简短的 IRB session ,展示了(对我来说)奇怪的地方。请注意,在 hash_secret 函数的结果中,前 29 个字符与盐相同。任何关于为什么会这样的信息将不胜感激。

我唯一的理论是加盐以及嵌入到散列中,这样就无需将加盐存储在单独的数据库字段中(本质上是一种记录打包策略)?

irb#1(main):004:0> password_salt = BCrypt::Engine.generate_salt
=> "$2a$10$OrKdcWORLL8Gorhy9XR3UO"
irb#1(main):005:0> password='abc'
=> "abc"
irb#1(main):006:0> BCrypt::Engine.hash_secret(password, password_salt)
=> "$2a$10$OrKdcWORLL8Gorhy9XR3UOY8Sebzq92m7r02XPitzoazPdO7tmsEO"
irb#1(main):007:0>

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