Usando ruby para gerar hashes no estilo de criptografia SHA512 formatados para / etc / shadow?
Eu quero gerar senhas com hash SHA512 para inclusão diretamente em um arquivo / etc / shadow para uso comrecurso de usuário do chef. Normalmente eu iria para o stdlib'sDigest
biblioteca para isso, mas não gera o hash no formato correto:
ruby-1.9.2-p136 :001 > require 'digest/sha2'
=> true
ruby-1.9.2-p136 :002 > Digest::SHA512.hexdigest('test')
=> "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"
O formato que o arquivo de sombra deseja é:
O módulo openssl "dgst" retorna o mesmo formato que .hexdigest e seu módulo "passwd" não inclui o suporte ao SHA512./ShPQNXV$HJnibH9lw01qtYqyJQiBf81ggJB2BGUvKA7.kv39HGCeE.gD4C/SS9zAf5BrwOv3VJzvl99FpHYli9E8jykRC0
Coisas que eu olhei:
O módulo openssl "dgst" retorna o mesmo formato que .hexdigest e seu módulo "passwd" não inclui o suporte ao SHA512.String # crypt, mas isso não suporta SHA512. (edit: esse é apenas o caso do OSX - as distribuições modernas do Linux funcionarão se você especificar "$ 6 $ somesalt" como o sal)cripta de rubi gem, mas não suporta SHA512Para comparação, algo que retorna o formato adequado é o PHPcripta, mas prefiro não precisar executar o PHP para algo que deve ser simples.