J'ai essayé de générer le MD5 sum (en utilisant md5sum) d'une chaîne, "hello". J'ai essayé différentes méthodes telles que l'outil md5sum sous Linux, la fonction MD5 () de PHP ainsi que divers traducteurs de texte en ligne en md5sum.
echo "hello" | md5sum
et
echo "hello" > file && md5sum file
Donne le résultat b1946ac92492d2347c6235b4d2611184
. Cependant, la fonction md5 () de PHP et presque tous les générateurs en ligne ont donné la sortie 5D41402ABC4B2A76B9719D911017C592
.
Quelle est la raison?
Par défaut, echo
inclut un caractère de nouvelle ligne à la fin de la sortie. Cependant, PHP et les sites en ligne que vous avez utilisés n'incluent pas la nouvelle ligne. Pour supprimer le caractère de nouvelle ligne, utilisez l'indicateur -n
:
echo -n "hello" | md5sum
Sortie:
5d41402abc4b2a76b9719d911017c592 -
Voir: help echo
ou avec printf:
printf "%s" "hello" | md5sum
@ La réponse de Cyrus est exactement sur le point de la façon de résoudre ce - pour expliquer, lors de l'utilisation echo
il affichera une nouvelle ligne à la fin de la chaîne. Comme vous pouvez le voir sur cette sortie en ligne, hello
avec sorties exactement la nouvelle ligne MD5 que vous obtenez précédemment. L'utilisation -n
supprime le saut de ligne, et vous donner le résultat que vous attendiez.
Edition :
Vous pouvez le voir clairement si vous émettez à hexdump
, qui montre l'hexadécimal des octets là-bas.
$ echo "str_example" | hd
00000000 73 74 72 5f 65 78 61 6d 70 6c 65 0a |str_example.|
Voir la 0a
(\n
) à la fin de la chaîne
$ echo -n "str_example" | hd
00000000 73 74 72 5f 65 78 61 6d 70 6c 65 |str_example|
Avec -n
écho ne met pas une nouvelle ligne (\n
) à la fin
Maintenant avec une chaîne vide
$ echo "" | hd
00000000 0a |.|
Juste le personnage de la nouvelle ligne
$ echo -n "" | hd
Chaîne vide, montre donc hexdump
pas de sortie