2009-07-18 18 views
5

Recibo diferentes resúmenes de mensajes de la herramienta 'sha512sum' de Linux y de la biblioteca hashlib de python.Diferencia en SHA512 entre python hashlib y la herramienta sha512sum

Aquí es lo que me pasa en mi 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' 

Ambos deben calcular el resumen del mensaje de la cadena "prueba", ¿por qué cree que estoy consiguiendo resultados diferentes?

Respuesta

16

Creo que la diferencia es que echo agrega un carácter de nueva línea a su salida. Prueba echo -n prueba | sha512sum

10

echo es la adición de una nueva línea:

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

Para evitar esto, utilizar echo -n.

2

Entrada diferente, salida diferente. Intente comparar como 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 
Cuestiones relacionadas