7

シェフのユーザーリソースで使用するために/etc/shadowファイルに直接含めるためのSHA512ハッシュパスワードを生成したいと思います。通常、これについては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に実行する必要はありません。

4

1 に答える 1

6

さらなる調査の後:

  • mkpasswdコマンド。これはdebianではwhoisパッケージに含まれています(奇妙な):

    mkpasswd -m sha-512

  • String#cryptは実際にはプラットフォームのネイティブcrypt()呼び出しを呼び出しますが、OSX(最大10.6)には代替暗号のサポートが含まれていません。"password" .crypt('$ 6 $ somesalt')はLinuxプラットフォームで機能します。

于 2011-03-02T23:18:16.237 に答える