Подтвердить что ты не робот

Почему хеш MD5, созданный Python, отличается от созданного с помощью echo и md5sum в оболочке?

Атрибут 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
4b9b3361

Ответ 1

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

> echo -n mystringforhash | md5sum
86b6423cb6d211734fc7d81bbc5e11d3  -