Pregunta

Me estoy haciendo digiere mensaje diferente de la herramienta de Linux 'sha512sum' y la biblioteca de Python hashlib.

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 "prueba" de cuerdas, ¿por qué cree que estoy consiguiendo resultados diferentes?

¿Fue útil?

Solución

Creo que la diferencia es que el eco añade un carácter de nueva línea a su salida. Intenta repetir la prueba -n | sha512sum

Otros consejos

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.

A diferencia de entrada, de salida diferente. Intente comparar con su semejante:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top