Difference in SHA512 between python hashlib tool and sha512sum

I get different message digests from the linux tool 'sha512sum' and the python hashlib library.

Here is what I get on my 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' 

Both should calculate the digest of the message string "test", why do you think that I get different results?

+5
python digest sha512
source share
3 answers

I think the difference is that echo adds a newline to its output. Try the echo -n test | sha512sum

+16
source share

echo adds a new line:

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

To avoid this, use echo -n .

+10
source share

Different input, different output. Try comparing, for example:

 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 
+2
source share

All Articles