web-dev-qa-db-fra.com

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

Comment pouvez-vous 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 comprends pas ce que ça fait vraiment.

md5 "string"

ne retourne pas de hash.

41
WildBill

Cela devrait marcher -

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

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

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

METTRE À JOUR:

Selon la page 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 hash. La raison pour laquelle vous trouvez le résultat différent de l'exemple ci-dessus est due à un point qui a été fait dans les commentaires. Les deux premiers exemples utilisent le caractère de fin newline pour produire le hachage. Pour éviter cela, vous pouvez utiliser:  

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

Pour réaliser ce que vous avez demandé: 

md5 -s string

sorties: MD5 ("chaîne") = b45cffe084dd3d20d928bee85e7b0f21

17
user3842869

OSX utilise md5 mais la plupart des ordinateurs utilisent md5sum

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

__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 )

15
richo

A partir de la ligne de commande:

md5 <<< "String to hash"
8a0a39505c5753ff64a0377ab0265509
1
Cameron E

La bonne façon de faire serait echo -n string | md5 au lieu de echo "string" | md5. (J'utilise zsh)

Convertissez le hash md5 donné par echo -n string | md5 vous obtiendrez string

md5 -s string fonctionne également, ce qui est déjà indiqué ici.

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

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

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

Toutes les autres réponses sont valables. Je voudrais aussi proposeropensslaussi:

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

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
0
Kyr