python الدوال - كيف يمكنني إنشاء رقم عشوائي آمن مشفر في python؟




3 Answers

يمكنك الحصول على قائمة بأرقام عشوائية فقط من خلال تطبيق الدالة ord عبر وحدات البايت التي يتم إرجاعها بواسطة os.urandom ، مثل هذا

>>> import os
>>> os.urandom(10)
'm\xd4\x94\x00x7\xbe\x04\xa2R'
>>> type(os.urandom(10))
<type 'str'>
>>> map(ord, os.urandom(10))
[65, 120, 218, 135, 66, 134, 141, 140, 178, 25]

نقلا عن وثائق os.urandom ،

إرجاع سلسلة من البايتات العشوائية n مناسبة للاستخدام التشفير .

تقوم هذه الدالة بارجاع بايتات عشوائية من مصدر عشوائية خاص بنظام التشغيل. يجب أن تكون البيانات التي تم إرجاعها غير متوقعة بما فيه الكفاية لتطبيقات التشفير ، على الرغم من أن الجودة الدقيقة تعتمد على تطبيق نظام التشغيل. على نظام UNIX يشبه هذا سوف الاستعلام /dev/urandom ، وعلى نظام التشغيل Windows فإنه سيتم استخدام CryptGenRandom() .

بايثون اكواد

أنا بصدد إنشاء مشروع في python وأود إنشاء رقم عشوائي آمن مشفرًا ، كيف يمكنني فعل ذلك؟ لقد قرأت على الإنترنت أن الأرقام التي يولدها الموزع العشوائي العادي ليست آمنة بشكل مشفر ، وأن الدالة os.urandom(n) إلى سلسلة وليس إلى رقم.




يقدم Python 3.6 وحدة أسرار جديدة ، والتي "توفر الوصول إلى مصدر الأمان الأكثر أمانًا الذي يوفره نظام التشغيل الخاص بك." لتوليد بعض الأرقام الآمنة المشفرة ، يمكنك الاتصال بـ secrets.randbelow() .

secrets.randbelow(n)

والتي ستعيد رقمًا بين 0 و n .




لإنشاء رقم صحيح شبه عشوائي آمن مشفر ، يمكنك استخدام الشفرة التالية:

int(binascii.hexlify(os.urandom(n)),16)

حيث n عدد صحيح و n أكبر ، كلما كان العدد الصحيح الذي تم إنشاؤه أكبر.

سيكون عليك استيراد os و binascii أولاً.

يمكن أن تختلف نتيجة هذا الرمز حسب النظام الأساسي.




Related

python random cryptography