2011-03-02 3 views
6

Je souhaite générer des mots de passe hachés SHA512 pour les inclure directement dans un fichier/etc/shadow à utiliser avec chef's user resource. Normalement, je vais à la bibliothèque Digest du stdlib pour cela, mais il ne génère pas le hachage dans le format:Utilisation de ruby ​​pour générer des hachages de type crypt SHA512 formatés pour/etc/shadow?

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

Le format que le fichier d'ombre veut est:

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

choses Je l'ai regardé:

  • OpenSSL "dgst" le module retourne le même format que .hexdigest, et son module "passwd" ne prend pas en charge SHA512.
  • Chaîne # crypt, mais ne prenant pas en charge SHA512. (Edit: ce n'est le cas sur OSX - distros Linux modernes fonctionneront si vous spécifiez "6 $ somesalt de $" comme le sel)
  • ruby-crypt bijou, mais il ne supporte pas SHA512

À titre de comparaison, quelque chose cela renvoie le bon format est crypt de PHP, mais je préfère ne pas avoir à exécuter PHP pour quelque chose qui devrait être simple.

Répondre

5

Après d'autres recherches:

  • La commande mkpasswd, qui sur debian est dans le paquet whois (bizarre):

    mkpasswd -m sha-512

  • Chaîne # crypte fait appelle en réalité l'appel crypt() natif de la plate-forme, cependant OSX (jusqu'à 10.6) n'inclut pas le support pour les chiffrements alternatifs. "password" .crypt ('$ 6 $ somesalt') fonctionnera sur les plateformes Linux.

+0

Je fusionnerais cela avec votre question. – Blender

+0

serait intéressé par une solution native de rubis: http://stackoverflow.com/questions/9043017/how-to-convert-php-crypt-function-sha512-to-ruby – c33s

Questions connexes