2009-07-18 10 views
5

Ricevo diversi messaggi digest dallo strumento linux 'sha512sum' e dalla libreria hashlib python.Differenza in SHA512 tra hashlib python e strumento sha512sum

Ecco quello che ho sulla mia 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' 

Entrambi dovrebbero calcolare il digest del messaggio della stringa "test", perché pensi che sto ottenendo risultati diversi?

risposta

16

Penso che la differenza sia che echo aggiunge un carattere di nuova riga al suo output. Prova echo -n test | sha512sum

10

echo è l'aggiunta di una nuova riga:

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

Per evitare questo, utilizzare echo -n.

2

Ingresso diverso, uscita diversa. Prova a confrontare come con:

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 
Problemi correlati