web-dev-qa-db-fra.com

Pourquoi un hachage MD5 créé par Python différent de celui créé en utilisant echo et md5sum dans le shell?

A Python Le hachage MD5 est différent de celui créé par la commande md5sum sur le shell. Pourquoi?

>>> import hashlib
>>> h = hashlib.md5()
>>> h.update("mystringforhash")
>>> print h.hexdigest()
86b6423cb6d211734fc7d81bbc5e11d3 # Result from Python


$ echo mystringforhash | md5sum
686687dd68c5de717b34569dbfb8d3c3  - # Result on the Shell
108
mailGO

echo ajoute un \n puisque vous ne voulez généralement pas que les lignes ne se terminent pas par un saut de ligne dans votre shell (cela semble vraiment moche si l'invite ne démarre pas tout à gauche).
Utilisez le -n argument pour omettre le saut de ligne de fin et il affichera la même somme de contrôle que votre script python:

> echo -n mystringforhash | md5sum
86b6423cb6d211734fc7d81bbc5e11d3  -
196
ThiefMaster