تقنية

token_hex في بايثون: لماذا تعطي أربعة بايتات ثمانية محارف؟

أربعة بايتات تعطي ثمانية محارف وستة تعطي اثني عشر
عدد بايتات وطول نص. [1] [2]

ميز البايتات المطلوبة من المحارف الناتجة. [1] [2]

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

كل بايت يقابله محرفان سداسيان عشريان. [1] [2]

  • تعيد token_hex نصًا عشوائيًا. [1] [2]
  • المعامل nbytes عدد بايتات، لا طول النص. [1] [2]
  • طلب 4 يعطي 8 محارف؛ و6 يعطي 12. [1] [2]
  • حددنا العدد؛ القيمة الافتراضية قابلة للتغيير. [1] [2]
  • اختبرنا 3.12.14؛ الطول لا يثبت التفرد أو أمان حساب. [1] [2]

المثال

import secrets as s
x=s.token_hex(4)
print(len(x))
print(all(c in '0123456789abcdef' for c in x))

[1] [2]

المخرجان 8 ثم True؛ لم نطبع الرمز نفسه. [1] [2]

ما الذي يعده المعامل؟

العدد يحدد البايتات قبل تحويلها إلى نص سداسي عشري. طول التمثيل لا يضاعف البايتات العشوائية. [1] [2]

فحص الطول والمحارف لا يثبت التفرد أو أمان الحساب
حدود الفحص. [1] [2]

حدود الفحص

الأربعة اختيار تعليمي للطول، لا توصية لحماية حساب. نفحص طولًا وصيغة؛ لا نثبت تفرد كل رمز أو نقيس جودة العشوائية. [1] [2]

المراجع

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

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