क्रिप्टोग्राफ़िक रूप से सुरक्षित यादृच्छिक संख्याएँ उत्पन्न करने के लिए हम रहस्य . का उपयोग कर सकते हैं पायथन में मॉड्यूल। यह मॉड्यूल सुरक्षित पासवर्ड, खाता प्रमाणीकरण, सुरक्षा टोकन या कुछ संबंधित रहस्य बनाने में मददगार है।
सीक्रेट मॉड्यूल की कक्षाओं और मॉड्यूल का उपयोग करने के लिए, हमें उस मॉड्यूल को अपने कोड में आयात करना चाहिए।
import secrets
यादृच्छिक संख्या
रहस्य मॉड्यूल का उपयोग यादृच्छिकता के कुछ सुरक्षित स्रोत तक पहुँचने के लिए किया जाता है। यह ऑपरेटिंग सिस्टम द्वारा प्रदान किया जाता है।
गुप्त मॉड्यूल की यादृच्छिक संख्याओं से संबंधित कक्षाएं और कार्य हैं -
कक्षा रहस्य.SystemRandom
यह कुछ उच्चतम गुणवत्ता वाले स्रोतों का उपयोग करके यादृच्छिक संख्याएं उत्पन्न करने वाला वर्ग है। ये स्रोत ऑपरेटिंग सिस्टम द्वारा प्रदान किए जाते हैं।
विधि रहस्य.पसंद(अनुक्रम)
इस पद्धति का उपयोग गैर-रिक्त अनुक्रम से एक तत्व को यादृच्छिक रूप से चुनने के लिए किया जाता है।
विधि secrets.randbelow(n)
इस विधि का उपयोग 0 से n (अनन्य) के बीच एक पूर्णांक मान चुनने के लिए किया जाता है।
विधि secrets.randbits(k)
इस विधि का उपयोग k संख्या के यादृच्छिक बिट्स के साथ एक पूर्णांक को वापस करने के लिए किया जाता है।
टोकन बनाना
रहस्य मॉड्यूल कुछ सुरक्षित टोकन भी उत्पन्न कर सकता है। इस प्रकार के टोकन पासवर्ड रीसेट, जटिल URL आदि उत्पन्न करने के लिए उपयोगी होते हैं।
टोकन जनरेशन से संबंधित कुछ तरीके हैं -
विधि secrets.token_bytes([nbytes=None])
यह विधि सुरक्षित टोकन उत्पन्न करने के लिए nbytes के साथ एक यादृच्छिक बाइट स्ट्रिंग लौटाती है। जब nbytes मान नहीं दिया जाता है, तो यह एक निर्दिष्ट डिफ़ॉल्ट मान का उपयोग करता है।
विधि secrets.token_hex([nbytes=None])
यह विधि हेक्साडेसिमल रूप में एक यादृच्छिक पाठ स्ट्रिंग लौटाती है। लौटाई गई स्ट्रिंग में यादृच्छिक बाइट्स nbytes हैं। प्रत्येक वर्ण को दो हेक्स अंकों में परिवर्तित किया जा सकता है। जब nbytes मान नहीं दिया जाता है, तो यह एक निर्दिष्ट डिफ़ॉल्ट मान का उपयोग करता है।
विधि secrets.token_urlsafe([nbytes=None])
इस विधि का उपयोग यादृच्छिक URL-सुरक्षित टेक्स्ट स्ट्रिंग को वापस करने के लिए किया जाता है। पाठ मूल रूप से बेस 64 एन्कोडेड है। औसतन प्रत्येक बाइट का परिणाम 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) #Create HEX token of length 10
my_tok2 = secrets.token_hex(5) #Create HEX token of length 5
print("First Token: " + my_tok1)
print("First Token: " + my_tok2)
आउटपुट
Random Password is: YK0l:YD??lKKY?o First Token: f3e68646dcf1082e1038 First Token: e4ae3c2384