67 votes

Comment créer un hachage md5 en bash sous Mac OS X

Comment créer un hachage md5 pour une chaîne sur un mac en utilisant bash ? md5sum n'existe pas dans mon environnement. J'ai fait un man pour md5 mais je ne sais pas ce que cela fait vraiment.

md5 "string"

ne renvoie pas de hachage.

114voto

jaypal Points 34440

Cela devrait fonctionner -

[jaypal:~/Temp] echo "this will be encrypted" | md5
72caf9daf910b5ef86796f74c20b7e0b

ou si vous préférez here string alors -

[jaypal:~/Temp] md5 <<< 'this will be encrypted'
72caf9daf910b5ef86796f74c20b7e0b

UPDATE :

Par le man vous pouvez jouer avec l'une des options suivantes

-s string
        Print a checksum of the given string.

-p      Echo stdin to stdout and append the checksum to stdout.

-q      Quiet mode - only the checksum is printed out.  Overrides the -r option.

[jaypal:~/Temp] md5 -s 'this will be encrypted'
MD5 ("this will be encrypted") = 502810f799de274ff7840a1549cd028a

[jaypal:~/Temp] md5 -qs 'this will be encrypted'
502810f799de274ff7840a1549cd028a

Remarque : MD5 produit toujours le même hachage. La raison pour laquelle vous trouvez un résultat différent de l'exemple donné ci-dessus est due à un point qui a été soulevé dans les commentaires. Les deux premiers exemples utilisent la terminaison newline pour produire le hachage. Pour éviter cela, vous pouvez utiliser :

[jaypal:~/Temp] echo -n "this will be encrypted" | md5
502810f799de274ff7840a1549cd028a

Par exemple, si vous utilisez echo -n "string" | md5 (notez le -n ), vous obtenez b45cffe084dd3d20d928bee85e7b0f21 . Mais, si vous utilisez echo "string" | md5 vous obtenez b80fa55b1234f1935cea559d9efbc39a .

Ou bien, vérifiez-le avec le shell :

➜  [jaypal:~/Temp] [ $(echo "HOLA" | md5) = $(echo "HOLA" -n | md5) ]; echo "$?"
1
# 1 -> False. Hence, the result from echoing "HOLA" toggling the -n flag
# outputs different md5 checksums.

22 votes

+1 mais avec une correction : this will be *hashed* , le cryptage est bidirectionnel ;)

12 votes

Faites également attention aux terminaisons de ligne. Vous avez haché "ceci sera crypté". \n ". La somme MD5 de "ceci sera crypté" est de 502810f799de274ff7840a1549cd028a que vous pouvez obtenir via echo -n "this will be encrypted" | md5 .

7 votes

Malheureusement, echo -n n'est pas très portable -- sur certaines plateformes, il ajoute "-n " devant la chaîne à imprimer (et ajoute aussi la nouvelle ligne). Utilisez printf "%s" "this will be encrypted" | md5 pour une bien meilleure portabilité.

32voto

user3842869 Points 371

Pour réaliser ce que vous avez demandé :

md5 -s string

sorties : MD5 ("string") = b45cffe084dd3d20d928bee85e7b0f21

0 votes

Si vous êtes bloqué avec PHP md5, voici la solution. La réponse acceptée n'a pas permis de récupérer le mot de passe PHP md5. Cela m'a permis de me connecter à nouveau à mon CMS.

16voto

richo Points 3238

OSX utilise md5 mais la plupart des Unices utilisent md5sum

Voici une section de rvm Le code de validation de rvmrc qui trouve le binaire md5 correct et l'enveloppe.

__rvm_md5_for()
{
  if builtin command -v md5 > /dev/null; then
    echo "$1" | md5
  elif builtin command -v md5sum > /dev/null ; then
    echo "$1" | md5sum | awk '{print $1}'
  else
    rvm_error "Neither md5 nor md5sum were found in the PATH"
    return 1
  fi

  return 0
}

( Code de https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/rvmrc )

3voto

Sand1512 Points 248

La façon correcte de procéder serait echo -n string | md5 au lieu de echo "string" | md5 . (J'utilise zsh)

Convertir le hachage md5 donné par echo -n string | md5 vous récupérerez string .

md5 -s string fonctionne également, ce qui a déjà été souligné ici.

λ [~] → echo "string" | md5
b80fa55b1234f1935cea559d9efbc39a

λ [~] → echo -n string | md5
b45cffe084dd3d20d928bee85e7b0f21

λ [~] → md5 -s string
MD5 ("string") = b45cffe084dd3d20d928bee85e7b0f21

3voto

Kyr Points 1961

Toutes les autres réponses sont valables. Je voudrais également proposer openssl également :

➜ echo 'this will be hashed' | openssl md5
55be2dc2df2c1cc7bad72a0ecb338841

ce qui est équivalent à ce qui suit

➜ echo 'this will be hashed' | openssl dgst -md5
# or
➜ openssl md5 <<< 'this will be hashed'
# or
➜ echo 'this will be hashed' | md5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X