سؤال

أحصل على ملامح رسائل مختلفة من أداة 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'

على حد سواء حساب رسالة هضم السلسلة "اختبار"، لماذا تعتقد أنني أحصل على نتائج مختلفة؟

هل كانت مفيدة؟

المحلول

أعتقد أن الفرق هو أن ECHO يضيف حرفا جديدا إلى إخراجه. جرب اختبار صدى | 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top