【问题标题】:Create StandardPasswordEncoder Password hashes from within ruby从 ruby​​ 中创建 StandardPasswordEncoder 密码哈希
【发布时间】:2018-04-06 15:22:59
【问题描述】:

我们正在运行不同的 java 应用程序,这些应用程序使用 org.springframework.security.crypto.password.StandardPasswordEncoder 来存储和读取密码哈希以保证所有用户密码的隐私。

我们通过 puppet 部署这些应用程序,并将所有配置数据管理到 hieradata (eyaml) 中。 现在我们要将所有密码存储在加密的 yaml 文件中,并从 puppet 中创建哈希值。 为此,我们想创建一个 puppet (ruby) 函数来以正确的哈希格式创建密码哈希。

StandardPasswordEncoder 似乎是一个用于加密密码的特殊弹簧类。有没有办法从 ruby​​ 创建这样的哈希?

【问题讨论】:

  • 你可以使用bcrypto-rubygithub.com/codahale/bcrypt-ruby
  • 但是bcrypt-ruby中使用的不是其他哈希算法,只是bcrypt。而StandardPasswordEncoder是sha256哈希方法?
  • 对不起,在这种情况下你可以使用摘要,我会把代码放在下面

标签: ruby spring puppet


【解决方案1】:

您可以使用 Digest 在 ruby​​ 中创建哈希,它是一个核心库 https://ruby-doc.org/stdlib-2.4.0/libdoc/digest/rdoc/Digest/SHA2.html

require 'digest'

# Compute a complete digest
Digest::SHA2.hexdigest 'abc'          # => "ba7816bf8..."
Digest::SHA2.new(256).hexdigest 'abc' # => "ba7816bf8..."
Digest::SHA256.hexdigest 'abc'        # => "ba7816bf8..."

Digest::SHA2.new(384).hexdigest 'abc' # => "cb00753f4..."
Digest::SHA384.hexdigest 'abc'        # => "cb00753f4..."

Digest::SHA2.new(512).hexdigest 'abc' # => "ddaf35a19..."
Digest::SHA512.hexdigest 'abc'        # => "ddaf35a19..."

# Compute digest by chunks
sha2 = Digest::SHA2.new               # =>#<Digest::SHA2:256>
sha2.update "ab"
sha2 << "c"                           # alias for #update
sha2.hexdigest                        # => "ba7816bf8..."

# Use the same object to compute another digest
sha2.reset
sha2 << "message"
sha2.hexdigest                        # => "ab530a13e..."

【讨论】:

  • 感谢该代码,但生成的哈希值似乎与 StandardPasswordEncoder 中的不同。 StandardPasswordEncoder 的文档说:“一个标准的 PasswordEncoder 实现,它使用具有 1024 次迭代和随机 8 字节随机盐值的 SHA-256 散列。”这似乎是这两个类之间的区别。
  • @ChristianMeißner 我刚刚检查了StandardPasswordEncoder 的文档,他们建议使用BCryptPasswordEncoder 以获得更高的安全性和与其他语言的兼容性
  • 是的,我知道。但我们不能简单地让它改变。我们的供应商曾经决定使用此功能,但我猜不要阅读此警告。现在我们有了描述的情况。我们还有很多其他的散列算法,所以我们必须以更广泛的方式处理散列的创建。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 2021-02-03
相关资源
最近更新 更多