Pythonのhashlibとsha512sum工具との間の差SHA512
質問
私は別のメッセージがLinuxのsha512sum "ツールやPythonのhashlibライブラリからダイジェスト取得しています。
ここで私は私の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'
の両方が文字列「テスト」のメッセージダイジェストを計算する必要があります、なぜあなたは、私は別の結果を取得していますと思いますか?
解決
私は違いはエコーがその出力に改行文字を追加することだと思います。 |エコー-nテストを試してみてくださいsha512sum
他のヒント
echo
は、改行を追加します:
$ python -c 'import hashlib; print hashlib.sha512("test\n").hexdigest()'
0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123
それを避けるために、echo -n
を使用します。
異なる入力、異なる出力。等と同様に比較してみます:
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
所属していません StackOverflow