Mit ruby zu generieren SHA512-crypt-style hashes formatiert /etc/shadow???

Möchte ich generieren, SHA512 Hash-Passwörter für die Aufnahme direkt in eine /etc/shadow-Datei für die Verwendung mit Koch, die die Benutzer-Ressource. Normalerweise würde ich gehen, um die stdlib ist Digest Bibliothek für diese, aber es nicht erzeugen den hash in das richtige format:

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

Format, dass der shadow-Datei will, ist:

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

Dinge habe ich mir angeschaut:

  • Openssl "dgst" - Modul liefert das gleiche format .hexdigest, und die "passwd" - Modul nicht enthalten SHA512 unterstützt.
  • String#crypt, das unterstützt aber nicht SHA512. (edit: dies ist nur der Fall auf OSX - modernen Linux-Distributionen funktionieren wird, wenn Sie angeben, "$6$somesalt" wie das Salz)
  • ruby-crypt Juwel, aber es nicht unterstützen, SHA512

Zum Vergleich, etwas, das nicht zurückkehren, das richtige format ist, das PHP Krypta, aber ich möchte lieber nicht haben, um exec aus PHP für etwas, das einfach sein sollte.

InformationsquelleAutor Gabe Martin-Dempesy | 2011-03-02

Schreibe einen Kommentar