تقنية

HMAC.copy في بايثون: هل تحديث النسخة يغير الأصل؟

الأصل والنسخة بعد الإضافة
بادئة وفرع مؤلف. [1] [2]

ننسخ حالة بادئة ونمد النسخة وحدها. [1] [2]

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

لا؛ تحديث النسخة هنا أبقى بصمة الأصل. [1] [2]

  • المفتاح own-key تعليمي، وليس سرًا إنتاجيًا. [1] [2]
  • الأصل بدأ ببايتات prefix: مع sha256. [1] [2]
  • نسخنا حالته ثم أضفنا B إلى النسخة. [1] [2]
  • يطبع المثال True ثم True لمقارنتين محليتين. [1] [2]
  • اختبرنا 3.12.14؛ لا توثيق لطرف خارجي. [1] [2]

المثال

import hmac
a=hmac.new(b'own-key',b'prefix:',digestmod='sha256')
before=a.digest()
b=a.copy()
b.update(b'B')
print(a.digest()==before)
print(b.digest()==hmac.digest(b'own-key',b'prefix:B','sha256'))

[1] [2]

حالتان بعد البادئة

النسخة تحمل أثر prefix:B، والأصل بقي عند prefix:. القراءة بـdigest لا تنهي التحديث؛ اختبرنا لاحقًا تحديث الأصل دون تغيير بصمة النسخة. [1] [2]

بقاء بصمة الأصل
المقارنة الأولى. [1] [2]

معنى المقارنتين

الأولى تقارن الأصل ببصمته السابقة. الثانية تقارن النسخة بحساب مباشر للرسالة الكاملة بالمفتاح نفسه. المقارنات لنتائج مؤلفة؛ ليست إجراء تحقق من بصمة واردة من طرف آخر. [1] [2]

حدود النتيجة

لا نقيس السرعة أو أمان المفتاح أو عزل موارد عامة. هذا نسخ لحالة HMAC، وليس وعدًا بأن كل فئة تنسخ بالطريقة نفسها. [1] [2]

المراجع

  1. Python: hmac
  2. CPython3.12.14: hmac.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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