पब्लिक की से RSA एन्क्रिप्शन
RSA पब्लिक की (PEM) से छोटा संदेश एन्क्रिप्ट करें: RSA-OAEP SHA-256, OAEP SHA-1 या PKCS#1 v1.5। एक क्लिक में टेस्ट की पेयर बनाएँ। सब कुछ सिर्फ़ स्थानीय।
OAEP सुझाई गई पैडिंग है। MGF1 वही हैश इस्तेमाल करता है, जैसे Web Crypto और openssl pkeyutl -pkeyopt rsa_oaep_md में।
RSA सिर्फ़ छोटा डेटा एन्क्रिप्ट कर सकता है: 2048-बिट की के लिए अधिकतम 190 बाइट (OAEP SHA-256), 214 बाइट (OAEP SHA-1) या 245 बाइट (PKCS#1 v1.5)। लंबे डेटा को AES से एन्क्रिप्ट करें और RSA से सिर्फ़ AES की एन्क्रिप्ट करें।
RSA एन्क्रिप्शन रैंडम होता है: एक ही टेक्स्ट को दो बार एन्क्रिप्ट करने पर अलग सिफ़रटेक्स्ट मिलते हैं, और दोनों सही तरह डिक्रिप्ट होते हैं।
पूरी तरह आपके ब्राउज़र में चलता है। आपका डेटा कभी अपलोड नहीं होता।
RSA एन्क्रिप्शन क्या है?
छोटे संदेश या सिमेट्रिक की को PEM फ़ॉर्मेट की RSA पब्लिक की से एन्क्रिप्ट करता है (SPKI BEGIN PUBLIC KEY, PKCS#1 BEGIN RSA PUBLIC KEY, X.509 सर्टिफ़िकेट, या प्राइवेट की जिससे पब्लिक हिस्सा लिया जाता है)। नतीजा सिर्फ़ मेल खाती प्राइवेट की का मालिक ही डिक्रिप्ट कर सकता है।
RSA एन्क्रिप्शन का उपयोग कैसे करें
- प्राप्तकर्ता की पब्लिक की (PEM) पेस्ट करें, या आज़माने के लिए टेस्ट की पेयर बनाएँ (2048-बिट) पर क्लिक करें।
- पैडिंग चुनें: RSA-OAEP (SHA-256) सुझाई गई है; जो पाने वाला कोड अपेक्षित करता हो उससे मिलाएँ।
- प्लेनटेक्स्ट लिखें (या AES की जैसे रॉ बाइट के लिए इनपुट एन्कोडिंग को Hex करें)।
- एन्क्रिप्ट करें पर क्लिक करें और Base64 या Hex सिफ़रटेक्स्ट कॉपी करें।
उदाहरण
"Hello RSA" with a 2048-bit public key, RSA-OAEP (SHA-256), Base64 output
A 344-character Base64 string (256 bytes) that changes on every run
RSA-OAEP रैंडम है, इसलिए कोई तय आउटपुट नहीं होता; प्राइवेट की से डिक्रिप्ट करने पर "Hello RSA" वापस मिलता है।
RSA एन्क्रिप्शन का उपयोग कब करें
RSA का इस्तेमाल छोटे सीक्रेट – पासवर्ड, टोकन या रैंडम बनाई AES की – को ऐसे व्यक्ति के लिए एन्क्रिप्ट करने में करें जिसकी पब्लिक की आपके पास है। बड़े डेटा के लिए इसका इस्तेमाल न करें: डेटा को AES से एन्क्रिप्ट करें और सिर्फ़ AES की को RSA से (हाइब्रिड एन्क्रिप्शन), या PGP इस्तेमाल करें। OAEP को प्राथमिकता दें; PKCS#1 v1.5 सिर्फ़ तब जब कोई पुराना सिस्टम माँगे।
RSA एन्क्रिप्शन कैसे काम करता है
RSA एन्क्रिप्शन पैड किए गए संदेश पर c = mᵉ mod n निकालता है। OAEP (PKCS#1 v2.2) संदेश को SHA-256 या SHA-1 के साथ MGF1 और रैंडम सीड बाइट से मास्क करता है; PKCS#1 v1.5 आगे रैंडम गैर-शून्य पैडिंग जोड़ता है। पैडिंग रैंडम होती है, इसलिए एक ही टेक्स्ट को दो बार एन्क्रिप्ट करने पर अलग सिफ़रटेक्स्ट मिलते हैं। सिफ़रटेक्स्ट की लंबाई मॉड्यूलस जितनी होती है (2048-बिट कीज़ के लिए 256 बाइट)। अधिकतम संदेश आकार OAEP के लिए k − 2·hLen − 2 बाइट और v1.5 के लिए k − 11 है (2048-बिट की के लिए 190, 214 और 245 बाइट)। कीज़ पार्स करने और एन्क्रिप्शन का काम node-forge करता है; नतीजे OpenSSL, Web Crypto और Node.js के साथ संगत हैं।
सामान्य उपयोग मामले
- हाइब्रिड एन्क्रिप्शन टेस्ट के लिए AES सेशन की एन्क्रिप्ट करना
- जाँचना कि आपका बैकएंड ब्राउज़र के OAEP-SHA256 सिफ़रटेक्स्ट को डिक्रिप्ट कर पाता है
- जिसने अपनी पब्लिक की दी हो उसे छोटा सीक्रेट भेजना
- पुरानी API के लिए PKCS#1 v1.5 टेस्ट डेटा बनाना
- समझना कि RSA की संदेश-आकार सीमा की साइज़ और पैडिंग पर कैसे निर्भर है
सुरक्षा नोट
कीज़ और संदेश सिर्फ़ आपके ब्राउज़र में प्रोसेस होते हैं। जिस वेबसाइट पर आपका नियंत्रण नहीं है, उस पर प्रोडक्शन प्राइवेट की पेस्ट न करें – इसके बजाय टेस्ट की पेयर बनाएँ।
अक्सर पूछे जाने वाले प्रश्न
मेरा संदेश बहुत लंबा क्यों है?
RSA सिर्फ़ कुछ सौ बाइट एन्क्रिप्ट कर सकता है। 2048-बिट की के साथ OAEP SHA-256 में 190 बाइट की अनुमति है। लंबे डेटा को AES से एन्क्रिप्ट करें और RSA सिर्फ़ AES की के लिए इस्तेमाल करें।
कौन सी पैडिंग चुनूँ?
नए सिस्टम के लिए SHA-256 के साथ RSA-OAEP (Web Crypto RSA-OAEP और hash: 'SHA-256', OpenSSL pkeyutl -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256)। OAEP SHA-1 कई पुरानी लाइब्रेरी का डिफ़ॉल्ट है (Java RSA/ECB/OAEPWithSHA-1AndMGF1Padding)। PKCS#1 v1.5 सिर्फ़ पुरानी संगतता के लिए।
सिफ़रटेक्स्ट हर बार क्यों बदलता है?
दोनों पैडिंग एन्क्रिप्शन से पहले रैंडम बाइट जोड़ती हैं। इससे हमलावर खुद संभावित संदेश एन्क्रिप्ट करके छोटे संदेशों का अनुमान नहीं लगा पाते।
क्या मैं प्राइवेट की से एन्क्रिप्ट कर सकता हूँ?
आप प्राइवेट की पेस्ट कर सकते हैं – एन्क्रिप्शन के लिए उसका पब्लिक आधा हिस्सा इस्तेमाल होता है। साइनिंग के अर्थ में “प्राइवेट की से एन्क्रिप्ट करना” अलग ऑपरेशन है और यहाँ उपलब्ध नहीं है।