2009-07-18 11 views
5

Otrzymuję różne podsumowania wiadomości z narzędzia "sha512sum" linuxa i biblioteki hashlib Pythona.Różnica w SHA512 między pythonem hashlib a narzędziem sha512sum

Oto co mam na moim Ubuntu 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' 

Obie powinny obliczyć Message Digest napisu „test”, dlaczego uważasz, że jestem coraz różne wyniki?

Odpowiedz

16

Myślę, że różnica polega na tym, że echo dodaje znak nowej linii do swoich wyników. Wypróbuj test echo -n | sha512sum

10

echo jest dodanie nowego wiersza:

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

Aby tego uniknąć, należy echo -n.

2

Różne wejścia, różne wyjścia. Spróbuj porównać z podobnymi:

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