gpt4 book ai didi

ruby - 使用 ruby​​ 生成格式化为/etc/shadow 的 SHA512 crypt-style 哈希?

转载 作者:数据小太阳 更新时间:2023-10-29 06:59:49 29 4
gpt4 key购买 nike

我想生成 SHA512 散列密码以直接包含在/etc/shadow 文件中以与 chef's user resource 一起使用.通常我会为此访问 stdlib 的 Digest 库,但它不会以正确的格式生成哈希:

ruby-1.9.2-p136 :001 > require 'digest/sha2'
=> true
ruby-1.9.2-p136 :002 > Digest::SHA512.hexdigest('test')
=> "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"

影子文件要的格式是:

$6$/ShPQNXV$HJnibH9lw01qtYqyJQiBf81ggJB2BGUvKA7.kv39HGCeE.gD4C/SS9zAf5BrwOv3VJzvl99FpHYli9E8jykRC0

我看过的东西:

  • openssl“dgst”模块返回与 .hexdigest 相同的格式,其“passwd”模块不包含 SHA512 支持。
  • String#crypt,但不支持 SHA512。 (编辑:这只是 OSX 上的情况 - 如果您指定“$6$somesalt”作为盐,现代 Linux 发行版将工作)
  • ruby-crypt gem,但不支持 SHA512

为了比较,返回正确格式的东西是 PHP 的 crypt ,但我宁愿不必执行 PHP 来处理一些应该很简单的事情。

最佳答案

经过进一步研究:

  • mkpasswd 命令,在 debian 上位于 whois 包中(奇怪):

    mkpasswd -m sha-512

  • String#crypt 实际上会调用平台的 native crypt() 调用,但是 OSX(最高 10.6)不包括对替代密码的支持。 "password".crypt('$6$somesalt') 将在 Linux 平台上运行。

关于ruby - 使用 ruby​​ 生成格式化为/etc/shadow 的 SHA512 crypt-style 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171487/

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