2009-07-18 5 views
5

Ich erhalte verschiedene Message Digests aus dem Linux 'sha512sum' Werkzeug und der Python hashlib Bibliothek.Unterschied in SHA512 zwischen Python hashlib und sha512sum tool

Hier ist, was ich auf meinem Ubuntu bekommen 8.10:

$ echo test | sha512sum 
0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123 - 

$ python 
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49) 
[GCC 4.3.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import hashlib 
>>> hashlib.sha512("test").hexdigest() 
'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff' 

Beide sollten die Message Digest der Zeichenfolge „test“ berechnen, warum ich erhalte unterschiedliche Ergebnisse?

Antwort

16

Ich denke der Unterschied ist, dass Echo seinem Ausgang ein Newline-Zeichen hinzufügt. Versuchen Sie echo -n Test | sha512sum

10

echo fügt eine neue Zeile:

$ python -c 'import hashlib; print hashlib.sha512("test\n").hexdigest()' 
0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123 

Um dies zu vermeiden, verwenden echo -n.

2

Unterschiedlicher Eingang, anderer Ausgang. Versuchen Sie den Vergleich mit Gleichem:

C:\junk>echo test| python -c "import sys, hashlib; x = sys.stdin.read(); print len(x), repr(x); print hashlib.sha512(x).hexdigest()" 
5 'test\n' 
0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123 
Verwandte Themen