تقنية

بصمة SHA-256 في بايثون: بايتات أم محارف؟

نوع وطول تمثيلي البصمة
نتائج المدخل نفسه. [1] [2]

قارن وحدتي الطول. [1] [2]

الخلاصة السريعة

شكل العرض مختلف للبصمة نفسها. [1] [2]

  • digest() يعيد bytes؛ هنا طولها 32 بايتًا. [1] [2]
  • hexdigest() يعيد str بطول 64 محرفًا. [1] [2]
  • كل بايت يمثله محرفان سداسيان. [1] [2]
  • raw.hex()==hexed يعطي True. [1] [2]
  • اختبرنا SHA-256 للمدخل b'wave' في 3.12.14؛ لا نعمم الطول على كل خوارزمية. [1] [2]

المثال

import hashlib as h
s=h.sha256(b'wave')
raw=s.digest()
hexed=s.hexdigest()
print(type(raw).__name__,
      len(raw))
print(type(hexed).__name__,
      len(hexed))
print(raw.hex()==hexed)

[1] [2]

المخرجات: bytes 32 ثم str 64 ثم True. [1] [2]

تتبّع التمثيل

أول ثلاثة بايتات قيمها العشرية 75،18،94؛ تقابلها الأزواج 4b،12،5e بالترتيب. [1] [2]

ثلاثة بايتات وستة محارف
فهارس من صفر. [1] [2]

لا نقارن طول المدخل بطول المخرج؛ نقارن تمثيلين لمخرج واحد. [1] [2]

وحدة القياس

العدد 64 يحصي محارف النص السداسي؛ ليس عدد بايتات digest(). [1] [2]

النطاق

القياس للنوع والطول والتمثيل؛ لا يختبر أمان الخوارزمية أو علاقة الملفات. [1] [2]

المراجع

  1. Python: hashlib
  2. CPython 3.12.14: _hashopenssl.c
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.