2013-08-04 4 views
10

यह कहा गया है कि अजगर के यादृच्छिक संख्या जनरेटरअजगर के साथ एक "uncrackable" "यादृच्छिक" संख्या बनाना

time 

पर निर्भर करता है जिसका मतलब है कि अगर मैं इस

23987429038409238409283 
की तरह एक यादृच्छिक संख्या बनाना चाहता था

और इसे "प्रमाणीकरण" के लिए ब्राउज़र कुकीज़ में संग्रहीत करें

यह संभव है कि कोई भी "समय" के आधार पर यह नंबर पा सके।

तो सवाल यह है कि, मैं एक यादृच्छिक संख्या कैसे बना सकता हूं जिसे अन्य लोगों द्वारा अनुमानित नहीं किया जा सकता है जो कोड के बारे में बहुत कुछ जानते हैं। ? यदि यह आपके सिस्टम पर उपलब्ध है

+3

इस अजगर पर एक वैध और सरल सवाल है, एक सरल जवाब है कि 'random.SystemRandom' साथ तो यह बहुत व्यापक रूप से बंद बंद करने के लिए कॉल करने के लिए कर रहा है सिर्फ सादे मूर्खतापूर्ण है। –

+0

हैकर्स द्वारा बंद जो हमें नहीं चाहते कि यह कैसे करें? –

+0

एक प्रश्न को बंद करने का क्या बेवकूफ कारण है! बहुत चौड़ा? एक है, और केवल एक, जवाब। एक आवेदन भाषा में, 'वास्तव में यादृच्छिक' के लिए प्रदान किए गए टूल का उपयोग करें। क्या कर्मों को बंद करने के प्रश्नों को हटाने के लिए वैसे भी है? –

उत्तर

19

आप random.SystemRandom उपयोग कर सकते हैं:

http://docs.python.org/2/library/random.html#random.SystemRandom

कक्षा ऑपरेटिंग सिस्टम द्वारा प्रदान स्रोतों से यादृच्छिक संख्या पैदा करने के लिए os.urandom() समारोह का उपयोग करता है। सभी प्रणालियों पर उपलब्ध नहीं है। सॉफ्टवेयर स्थिति पर निर्भर नहीं है और अनुक्रम पुन: उत्पन्न नहीं होते हैं।

http://docs.python.org/2/library/os.html#os.urandom

वापसी क्रिप्टोग्राफिक उपयोग के लिए उपयुक्त n यादृच्छिक बाइट्स के एक स्ट्रिंग।

यह फ़ंक्शन एक ओएस-विशिष्ट यादृच्छिकता स्रोत से यादृच्छिक बाइट्स देता है। लौटाया गया डेटा क्रिप्टोग्राफिक अनुप्रयोगों के लिए पर्याप्त अप्रत्याशित होना चाहिए, हालांकि इसकी सटीक गुणवत्ता ओएस कार्यान्वयन पर निर्भर करती है।

उदा।

>>> import sys 
>>> import random 
>>> rng = random.SystemRandom() 
>>> rng.random() 
0.7195432667967437 
>>> rng.randint(0, sys.maxint) 
3614556690529452993 
संबंधित मुद्दे