ক্রিপ্টোগ্রাফিক্যালি সিকিউর র্যান্ডম নম্বর জেনারেট করতে পাইথনে secrets মডিউল ব্যবহার করা যায়। এই মডিউল সিকিউর পাসওয়ার্ড, অ্যাকাউন্ট অথেন্টিকেশন, সিকিউরিটি টোকেন বা কিছু সংক্রান্ত সিক্রেট তৈরি করতে সাহায্য করে।
secrets মডিউলের ক্লাস এবং মডিউল ব্যবহার করতে হলে, আমাদের সেই মডিউলটি আমাদের কোডে ইম্পোর্ট করতে হবে।
import secrets
র্যান্ডম নম্বর
secrets মডিউল কিছু সিকিউর র্যান্ডমনেসের সোর্স অ্যাক্সেস করতে ব্যবহৃত হয়। যা অপারেটিং সিস্টেম দ্বারা প্রদান করা হয়।
secrets মডিউলের র্যান্ডম নম্বর সংক্রান্ত ক্লাস এবং ফাংশন -
secrets.SystemRandom ক্লাস
এটি একটি ক্লাস যা র্যান্ডম নম্বর জেনারেট করতে ব্যবহৃত হয়, কিছু হাইএস্ট কোয়ালিটি সোর্স ব্যবহার করে। এই সোর্সগুলো অপারেটিং সিস্টেম দ্বারা প্রদান করা হয়।
secrets.choice(sequence) মেথড
এই মেথড একটি নন-এম্পটি সিকোয়েন্স থেকে র্যান্ডমলি একটি এলিমেন্ট বেছে নেওয়ার জন্য ব্যবহৃত হয়।
secrets.randbelow(n) মেথড
এই মেথড ০ থেকে n (এক্সক্লুসিভ) রেঞ্জ থেকে একটি ইন্টিজার ভ্যালু বেছে নেওয়ার জন্য ব্যবহৃত হয়।
secrets.randbits(k) মেথড
এই মেথড k সংখ্যক র্যান্ডম বাইটসহ একটি ইন্টিজার ফেরত দেয়।
টোকেন জেনারেট করা
secrets মডিউল কিছু সিকিউর টোকেনও জেনারেট করতে পারে। এই টাইপের টোকেন পাসওয়ার্ড রিসেট, জটিল URL ইত্যাদি জেনারেট করতে উপকারী।
টোকেন জেনারেশন সংক্রান্ত কিছু মেথড -
secrets.token_bytes([nbytes=None]) মেথড
এই মেথড nbytes দিয়ে সিকিউর টোকেন জেনারেট করার জন্য একটি র্যান্ডম বাইট স্ট্রিং ফেরত দেয়। যখন nbytes ভ্যালু দেওয়া নেই, এটি একটি নির্দিষ্ট ডিফল্ট ভ্যালু ব্যবহার করে।
secrets.token_hex([nbytes=None]) মেথড
এই মেথড হেক্সাডেসিমাল ফরম্যাটে একটি র্যান্ডম টেক্সট স্ট্রিং ফেরত দেয়। রিটার্নড স্ট্রিং-এ nbytes র্যান্ডম বাইট থাকে। প্রতিটি ক্যারেক্টার দুই হেক্স ডিজিটে কনভার্ট করা যায়। যখন nbytes ভ্যালু দেওয়া নেই, এটি একটি নির্দিষ্ট ডিফল্ট ভ্যালু ব্যবহার করে।
secrets.token_urlsafe([nbytes=None]) মেথড
এই মেথড একটি র্যান্ডম URL-সেফ টেক্সট স্ট্রিং ফেরত দেয়। টেক্সটটি মূলত Base64 এনকোডেড। গড়ে প্রতিটি বাইট ১.৩ ক্যারেক্টার ফলাফল দেয় (অনুমানিক)।
উদাহরণ কোড
import secrets
my_sequence = ['K','?','D',':','o','5','t','l','Y','0']
rand_pass = ''
for i in range(15):
rand_char = secrets.choice(my_sequence)
rand_pass += rand_char
print("Random Password is: " + rand_pass)
my_tok1 = secrets.token_hex(10) # লেন্থ ১০ এর HEX টোকেন তৈরি
my_tok2 = secrets.token_hex(5) # লেন্থ ৫ এর HEX টোকেন তৈরি
print("First Token: " + my_tok1)
print("First Token: " + my_tok2)
আউটপুট
Random Password is: YK0l:YD??lKKY?o First Token: f3e68646dcf1082e1038 First Token: e4ae3c2384