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.
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
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
Pour réaliser ce que vous avez demandé:
md5 -s string
sorties: MD5 ("chaîne") = b45cffe084dd3d20d928bee85e7b0f21
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 )
A partir de la ligne de commande:
md5 <<< "String to hash"
8a0a39505c5753ff64a0377ab0265509
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
Toutes les autres réponses sont valables. Je voudrais aussi proposeropenssl
aussi:
➜ 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