BigInteger.isProbablePrime(int)
क्रिप्टोग्राफी में मानक उपयोग का मामला है। विशेष रूप से, कुछ क्रिप्टोग्राफिक एल्गोरिदम, जैसे कि आरएसए , को यादृच्छिक रूप से चुने गए बड़े अपराधों की आवश्यकता होती है। महत्वपूर्ण रूप से, हालाँकि, इन एल्गोरिदमों को वास्तव में इन नंबरों को प्राइम होने की गारंटी की आवश्यकता नहीं है - उन्हें बस एक बहुत ही उच्च संभावना के साथ प्राइम होने की आवश्यकता है ।
कितना ऊँचा है? खैर, एक क्रिप्टो आवेदन में, एक आम तौर पर .isProbablePrime()
128 और 256 के बीच एक तर्क के साथ कॉल करेगा। इस प्रकार, इस तरह के एक परीक्षण को पारित करने वाले गैर-अभाज्य संख्या की संभावना 2 128 या 2 256 में से एक से कम है ।
आइए डालते हैं परिप्रेक्ष्य में: यदि आपके पास 10 बिलियन कंप्यूटर थे, तो प्रत्येक में 10 बिलियन संभावित प्राइम नंबर प्रति सेकंड (जो कि किसी भी आधुनिक सीपीयू पर प्रति नंबर एक घड़ी चक्र से कम होगा), और उन नंबरों की मौलिकता के साथ परीक्षण किया गया था .isProbablePrime(128)
, आप औसतन, हर 100 बिलियन वर्षों में एक बार नॉन-प्राइम नंबर आने की उम्मीद है ।
यही है, यह मामला होगा, अगर उन 10 बिलियन कंप्यूटर किसी भी तरह से सैकड़ों अरबों वर्षों तक बिना किसी हार्डवेयर विफलता के अनुभव कर सकते हैं । व्यवहार में, हालांकि, यह एक बहुत अधिक संभावना है कि एक यादृच्छिक कॉस्मिक किरण के लिए सही समय और वापसी मान फ्लिप करने के स्थान पर अपने कंप्यूटर हड़ताल है की .isProbablePrime(128)
किसी अन्य पता लगाने योग्य प्रभाव पैदा करने के बिना, असत्य से सत्य में, की तुलना में यह एक गैर के लिए है -प्रमाण संख्या वास्तव में उस निश्चित स्तर पर संभाव्य परिमाण परीक्षण पास करने के लिए।
बेशक, यादृच्छिक ब्रह्मांडीय किरणों और अन्य हार्डवेयर दोषों का एक ही जोखिम भी एकेएस जैसे निर्धारक प्राणिकता परीक्षणों पर लागू होता है । इस प्रकार, व्यवहार में, यहां तक कि इन परीक्षणों में यादृच्छिक हार्डवेयर विफलताओं (कार्यान्वयन बग के रूप में त्रुटियों के अन्य सभी संभावित स्रोतों का उल्लेख नहीं करने) के कारण एक (बहुत छोटा) आधारभूत झूठी सकारात्मक दर है।
चूँकि इस आधारभूत दर से बहुत नीचे तक उपयोग की जाने वाली मिलर-राबिन प्राइमलिटी टेस्ट की आंतरिक झूठी सकारात्मक दर को धकेलना आसान है .isProbablePrime()
, बस कई बार परीक्षण को पर्याप्त रूप से दोहराकर, और तब से, कई बार दोहराया गया, मिलर-राबिन परीक्षण अभी भी है AKS जैसे सर्वश्रेष्ठ ज्ञात नियतात्मक प्राणिकता परीक्षणों की तुलना में व्यवहार में बहुत तेज है, यह क्रिप्टोग्राफिक अनुप्रयोगों के लिए मानक प्राणिकता परीक्षण है।
(इसके अलावा, भले ही आप गलती से अपने आरएसए मापांक के कारकों में से एक के रूप में एक मजबूत छद्मरूप का चयन करें, यह आम तौर पर एक भयावह विफलता का कारण नहीं होगा। आमतौर पर, इस तरह के छद्म वर्ण लगभग दो (या शायद ही कभी अधिक) के उत्पाद होंगे। आधी लंबाई, जिसका मतलब है कि आप मल्टी-प्राइम आरएसए कुंजी के साथ समाप्त हो जाएंगे । जब तक कि कोई भी कारक बहुत छोटा नहीं था (और यदि वे थे, तो प्रायोगिक परीक्षण उन्हें पकड़ा जाना चाहिए), आरएसए एल्गोरिदम होगा अभी भी ठीक काम करते हैं, और कुंजी, हालांकि एक ही लंबाई के सामान्य आरएसए कुंजी की तुलना में कुछ प्रकार के हमलों के खिलाफ कुछ हद तक कमजोर है, फिर भी अगर आप की लंबाई पर मुख्य रूप से कंजूसी नहीं करते हैं, तो यथोचित रूप से सुरक्षित होना चाहिए।)