Ein Python MD5-Hash unterscheidet sich von dem, der mit dem Befehl md5sum in der Shell erstellt wurde. Warum?
>>> import hashlib
>>> h = hashlib.md5()
>>> h.update("mystringforhash")
>>> print h.hexdigest()
86b6423cb6d211734fc7d81bbc5e11d3 # Result from Python
$ echo mystringforhash | md5sum
686687dd68c5de717b34569dbfb8d3c3 - # Result on the shell
echo
, dass ein funktionsfähiges-n
Flag vorhanden ist. POSIX sagt Folgendes überecho
: "Wenn der erste Operand ist-n
oder wenn einer der Operanden ein<backslash>
Zeichen enthält, sind die Ergebnisse implementierungsdefiniert." (Quelle: pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html ). Verwenden Sieprintf
stattdessen.md5sum
spielt hier keine Rolle. Die Eingabe tut. Und ohne-n
fügt echo einen Zeilenumbruch hinzu, der zu einem anderen Hash führt.