क्रिप्टोग्राफिकली सिक्योर रैंडम नंबर्स जनरेट करने के लिए हम पायथन में secrets मॉड्यूल का उपयोग कर सकते हैं। यह मॉड्यूल सिक्योर पासवर्ड, अकाउंट ऑथेंटिकेशन, सिक्योरिटी टोकन्स या कुछ संबंधित सीक्रेट्स बनाने में सहायक है।
secrets मॉड्यूल के क्लासेस और मॉड्यूल्स का उपयोग करने के लिए, हमें उस मॉड्यूल को अपने कोड में आयात करना चाहिए।
import secrets
रैंडम नंबर्स
secrets मॉड्यूल का उपयोग सिक्योर रैंडमनेस के कुछ उच्चतम गुणवत्ता वाले स्रोतों तक पहुंचने के लिए किया जाता है। जो ऑपरेटिंग सिस्टम्स द्वारा प्रदान किए जाते हैं।
secrets मॉड्यूल के रैंडम नंबर्स से संबंधित क्लासेस और फंक्शन्स हैं:
क्लास secrets.SystemRandom
यह ऑपरेटिंग सिस्टम्स द्वारा प्रदान किए गए कुछ उच्चतम गुणवत्ता वाले स्रोतों का उपयोग करके रैंडम नंबर्स जनरेट करने के लिए एक क्लास है।
मेथड secrets.choice(sequence)
यह मेथड नॉन-इम्प्टी सीक्वेंस से रैंडमली एक एलिमेंट चुनने के लिए उपयोग किया जाता है।
मेथड secrets.randbelow(n)
यह मेथड 0 से n (एक्सक्लूसिव) की रेंज से एक इंटीजर वैल्यू चुनने के लिए उपयोग किया जाता है।
मेथड secrets.randbits(k)
यह मेथड k नंबर के रैंडम बिट्स के साथ एक इंटीजर लौटाने के लिए उपयोग किया जाता है।
टोकन्स जनरेट करना
secrets मॉड्यूल कुछ सिक्योर टोकन्स भी जनरेट कर सकता है। इस प्रकार के टोकन्स पासवर्ड रीसेट, कॉम्प्लेक्स URLs आदि जनरेट करने के लिए उपयोगी हैं।
टोकन जनरेशन से संबंधित कुछ मेथड्स हैं:
मेथड secrets.token_bytes([nbytes=None])
यह मेथड सिक्योर टोकन्स जनरेट करने के लिए nbytes के साथ एक रैंडम बाइट स्ट्रिंग लौटाता है। जब nbytes वैल्यू नहीं दी जाती है, तो यह एक निर्दिष्ट डिफ़ॉल्ट वैल्यू का उपयोग करता है।
मेथड secrets.token_hex([nbytes=None])
यह मेथड हेक्साडेसिमल फॉर्म में एक रैंडम टेक्स्ट स्ट्रिंग लौटाता है। लौटाई गई स्ट्रिंग में nbytes रैंडम बाइट्स होते हैं। प्रत्येक कैरेक्टर को दो हेक्स डिजिट्स में बदला जा सकता है। जब nbytes वैल्यू नहीं दी जाती है, तो यह एक निर्दिष्ट डिफ़ॉल्ट वैल्यू का उपयोग करता है।
मेथड secrets.token_urlsafe([nbytes=None])
यह मेथड एक रैंडम URL-सेफ टेक्स्ट स्ट्रिंग लौटाने के लिए उपयोग किया जाता है। टेक्स्ट मूल रूप से Base64 एन्कोडेड होता है। औसतन प्रत्येक बाइट के परिणामस्वरूप 1.3 कैरेक्टर्स होते हैं (लगभग)।
उदाहरण कोड
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) # लंबाई 10 का HEX टोकन बनाएं
my_tok2 = secrets.token_hex(5) # लंबाई 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