Skrót Pythona MD5 różni się od tego utworzonego przez polecenie md5sum w powłoce. Czemu?
>>> import hashlib
>>> h = hashlib.md5()
>>> h.update("mystringforhash")
>>> print h.hexdigest()
86b6423cb6d211734fc7d81bbc5e11d3 # Result from Python
$ echo mystringforhash | md5sum
686687dd68c5de717b34569dbfb8d3c3 - # Result on the shell
echo
że masz działającą-n
flagę. POSIX mówi co następujeecho
: "Jeśli pierwszy operand to-n
, lub jeśli którykolwiek z operandów zawiera<backslash>
znak, wyniki są zdefiniowane przez implementację." (źródło: pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html ). Użyjprintf
zamiast tego.md5sum
nie ma tutaj znaczenia. Wejście tak. Bez tego-n
echo dołącza znak podziału wiersza, co skutkuje innym hashem.