अधिकांश आधुनिक ऑपरेटिंग सिस्टमों में cryptographically-secure pseudo-random number generator है।
उदाहरण के लिए, विंडोज CryptGenRandom है। आप RNGCryptoServiceProvider कक्षा का उपयोग करके .NET से उसी स्ट्रीम तक पहुंच सकते हैं। सी ++ से, आप Microsoft C++ लाइब्रेरी फ़ंक्शन rand_s का उपयोग कर उसी स्ट्रीम तक पहुंच सकते हैं। पायथन से, ओएस मॉड्यूल में फ़ंक्शन urandom (लिंक किए गए पृष्ठ के नीचे देखें) का उपयोग करके यह सुलभ है।
सामान्य पीआरएनजी के विपरीत, सीएसपीआरएनजी कठोर सांख्यिकीय यादृच्छिक परीक्षणों को पारित करने के लिए डिज़ाइन किए गए हैं। उन्हें गंभीर हमले के तहत भी अच्छी तरह से पकड़ने के लिए डिज़ाइन किया गया है, भले ही उनके प्रारंभिक या चल रहे राज्य एक हमलावर के लिए उपलब्ध हो जाएं।
क्रिप्टोग्राफरों द्वारा उपयोग किए जाने वाले शब्द "छद्म-यादृच्छिक", गैर-तकनीकी पाठक के लिए भ्रामक हो सकता है। एक सीएसपीआरएनजी यादृच्छिक मूल्यों का एक संग्रह फैलाता है, जिन्हें बीज के रूप में जाना जाता है, संख्याओं के लंबे अनुक्रम में। यह अनुक्रम बीज को दोहराया जाता है, लेकिन किसी भी अच्छे सीएसपीआरएनजी के लिए, बीज में मामूली परिवर्तन एक बहुत ही अलग अनुक्रम पैदा करता है। इसलिए, जब तक कि बीज के कम से कम हिस्से को पर्याप्त रूप से यादृच्छिक प्रक्रिया के माध्यम से चुना जाता है, तब तक हमलावर परिणामस्वरूप अनुक्रम की भविष्यवाणी करने में असमर्थ होता है - भले ही हमलावर बीज के शेष को प्रभावित कर सके।
सैन्य संचार से लेकर लगभग सभी ऑनलाइन लेन-देन की रक्षा करने वाले एन्क्रिप्शन से लेकर कई महत्वपूर्ण प्रणालियां, "क्रिप्टोग्राफिक-सुरक्षित छद्म-यादृच्छिक" और "यादृच्छिक" के बीच कार्यात्मक रूप से समकक्ष सुरक्षा पर भरोसा करती हैं।
EDIT: यदि आप इंटेल की आईवी ब्रिज प्रोसेसर रेंज के साथ काम करने के लिए भाग्यशाली हैं, तो अब आपके पास another very interesting alternative है।
आप कौन सी भाषा/ऑपरेटिंग सिस्टम/रनटाइम पर्यावरण का उपयोग कर रहे हैं? –
कुछ अच्छे समाधानों के लिए यहां देखें: http://stackoverflow.com/questions/3436376/what-is-the-most-secure-seed-for-random-number- जनरेशन –
@Erik, इससे कोई फर्क नहीं पड़ता बहुत। अधिमानतः विंडोज़, हालांकि। –