Почему хеш MD5, созданный Python, отличается от хеша, созданного с использованием echo и md5sum в оболочке? - PullRequest
105 голосов
/ 17 апреля 2011

Хеш Python MD5 отличается от хеша, созданного командой md5sum в оболочке.Почему?

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


$ echo mystringforhash | md5sum
686687dd68c5de717b34569dbfb8d3c3  - # Result on the shell

1 Ответ

193 голосов
/ 17 апреля 2011

echo добавляет \n, так как обычно вы не хотите, чтобы строки, не заканчивающиеся переводом строки в вашей оболочке (это выглядит ужасно, если подсказка не начинается в самом левом углу).
Используйте аргумент -n, чтобы опустить завершающий перенос строки, и он напечатает ту же контрольную сумму, что и ваш скрипт на python:

> echo -n mystringforhash | md5sum
86b6423cb6d211734fc7d81bbc5e11d3  -
...