टूल
गाइड

RSA एन्क्रिप्ट / साइन

क्रिप्टो

Web Crypto से RSA-OAEP एन्क्रिप्शन और RSASSA-PKCS1-v1_5 साइनिंग। कुंजी युग्म बनाएँ या PEM कुंजी चिपकाएँ।

100% क्लाइंट-साइड कोई बैकएंड नहीं
संदेश
हस्ताक्षर
कुंजी (PEM)
आउटपुट
सार्वजनिक कुंजी (PEM)
निजी कुंजी (PEM)
इस पृष्ठ पर

RSA क्या है?#

RSA असिमेट्रिक क्रिप्टोग्राफ़ी है: यह एक साझा गुप्त के बजाय कुंजीयों की एक मिलान जोड़ी के साथ काम करता है। एक सार्वजनिक कुंजी कोई भी किसी को दी जा सकती है — इसका एकमात्र काम डेटा लॉक करना और हस्ताक्षर जाँचना है। एक निजी कुंजी आपके पास रहती है और वह एकमात्र चीज़ है जो सार्वजनिक कुंजी से एन्क्रिप्ट किए डेटा को अनलॉक कर सकती है, या ऐसा हस्ताक्षर बना सकती है जिसे कोई भी सत्यापित कर सके। वही विभाजन है जो दो ऐसे पक्षों को संभव बनाता है जिन्होंने कभी गुप्त साझा नहीं की विश्वासनीय संदेश आदान-प्रदान कर सकें और प्रामाणिकता सिद्ध कर सकें।

यह पेज उन चार कामों को कवर करता है जिनके लिए RSA आमतौर पर उपयोग होता है, सब ब्राउज़र के नेटिव Web Crypto इंजन के ज़रिए:

  • एन्क्रिप्ट करें / डिक्रिप्ट करें SHA-256 के साथ RSA-OAEP उपयोग करते हैं — आधुनिक, प्रमाणित-पैडिंग योजना। सार्वजनिक कुंजी से एन्क्रिप्ट किया गया एक छोटा संदेश केवल निजी कुंजी से ही वापस पढ़ा जा सकता है।
  • हस्ताक्षर करें / सत्यापित करें SHA-256 के साथ RSASSA-PKCS1-v1_5 उपयोग करते हैं — सबसे व्यापक रूप से अंतर-संचालनीय साइनिंग योजना, वह जो अधिकांश JWT और X.509 चेन अभी भी उपयोग करते हैं।
  • कुंजी निर्माण 2048-, 3072-, या 4096-बिट जोड़ियाँ 65537 के सार्वजनिक एक्सपोनेंट के साथ बनाता है, मानक PEM (सार्वजनिक कुंजी के लिए SubjectPublicKeyInfo, निजी कुंजी के लिए PKCS#8) के रूप में निर्यात की जाती हैं।

RSA को जानबूझकर छोटे पेलोड्स तक सीमित रखा गया है। RSA-2048 और SHA-256 के साथ, आप जितना सबसे बड़ा संदेश एन्क्रिप्ट कर सकते हैं वह लगभग 190 बाइट्स है; इससे बड़े के लिए, सिमेट्रिक औज़ार उपयोग करें और उसकी कुंजी को RSA से सुरक्षित करें।

इसका उपयोग कैसे करें#

  1. एक जोड़ी उत्पन्न करें। कुंजी आकार (2048 / 3072 / 4096) चुनें और उत्पन्न पर क्लिक करें। दो केवल-पढ़ने योग्य बॉक्स भर जाते हैं: सार्वजनिक कुंजी और निजी कुंजी, दोनों PEM में। प्रत्येक को कहीं सुरक्षित रखें — निजी कुंजी वह है जिसे आपको कभी साझा नहीं करना।
  2. कोई मोड चुनें: एन्क्रिप्ट करें, डिक्रिप्ट करें, हस्ताक्षर करें, या सत्यापित करें।
  3. मोड के लिए Key फ़ील्ड में सही कुंजी डालें:
    • एन्क्रिप्ट करें → सार्वजनिक कुंजी चिपकाएँ।
    • डिक्रिप्ट करें → निजी कुंजी चिपकाएँ।
    • हस्ताक्षर करें → निजी कुंजी चिपकाएँ।
    • सत्यापित करें → सार्वजनिक कुंजी चिपकाएँ।
  4. संदेश टाइप करें। सत्यापित करने के लिए, हस्ताक्षर फ़ील्ड में हस्ताक्षर (बेस64) भी चिपकाएँ।
  5. इसे चलाएँ। स्थिति पट्टी परिणाम रिपोर्ट करती है — सत्यापित करने के लिए वह स्पष्ट रूप से बताती है कि हस्ताक्षर वैध है या अमान्य।

प्रमुख विशेषताएँ#

  • दो एल्गोरिदम, एक कुंजी जोड़ी। वही PEM OAEP एन्क्रिप्शन और PKCS#1 साइनिंग दोनों के लिए काम करता है, क्योंकि Web Crypto एल्गोरिदम को इंपोर्ट समय पर लेता है।
  • मानक PEM आउटपुट। सार्वजनिक कुंजीज़ SPKI हैं, निजी कुंजीज़ PKCS#8 — वे फ़ॉर्मेट जिन्हें हर भाषा और प्लेटफ़ॉर्म नेटिव रूप से पढ़ता है।
  • 65537 सार्वजनिक एक्सपोनेंट। सार्वभौमिक रूप से चुना गया मान; इतना छोटा कि तेज़ हो, इतना बड़ा कि ज्ञात कमज़ोरियों से बचे।
  • अंतर-संचालनीय हस्ताक्षर। RSASSA-PKCS1-v1_5 वह फ़ॉर्मेट है जिसकी वास्तविक-दुनिया JWT, कोड-साइनिंग, और प्रमाणपत्र चेन अपेक्षा करती हैं।
  • ज़ीरो अपलोड। कुंजी निर्माण, एन्क्रिप्शन, और साइनिंग सब स्थानीय रूप से आपके ब्राउज़र में चलते हैं; निजी कुंजी कभी सर्वर को नहीं छूती।

कार्य उदाहरण#

2048 चुनकर उत्पन्न पर क्लिक करें। सार्वजनिक-कुंजी बॉक्स इस आकार के PEM ब्लॉक से भर जाता है:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyY7v...(lines of base64)
-----END PUBLIC KEY-----

निजी-कुंजी बॉक्स एक लंबे -----BEGIN PRIVATE KEY----- ब्लॉक से भर जाता है। अब एन्क्रिप्ट करें पर स्विच करें, Key फ़ील्ड में सार्वजनिक कुंजी चिपकाएँ, संदेश के रूप में handshake: 0x4F2A टाइप करें, और चलाएँ। आउटपुट लगभग 344 कैरेक्टर्स लंबा एकल बेस64 ढेर है — ठीक 256 बाइट्स RSA-2048 साइफरटेक्स्ट के, बेस64-एन्कोडेड।

डिक्रिप्ट करें पर स्विच करें, Key फ़ील्ड में निजी कुंजी चिपकाएँ, वह ढेर संदेश फ़ील्ड में डालें, और चलाएँ: मूल handshake: 0x4F2A वापस आता है। साइनिंग के लिए, हस्ताक्षर करें के साथ वही प्रवाह एक 344-कैरेक्टर बेस64 हस्ताक्षर बनाता है जिसे सत्यापित करें सार्वजनिक कुंजी के विरुद्ध वैध की पुष्टि करेगा — और अमान्य की रिपोर्ट करेगा यदि आप पहले संदेश का एक कैरेक्टर बदलें।

अक्सर पूछे जाने वाले प्रश्न#

RSA केवल छोटे संदेश ही क्यों एन्क्रिप्ट कर सकता है?#

RSA कुंजी आकार के मापक के अनुसार संख्याओं पर काम करता है। RSA-2048 के साथ आपके पास 256-बाइट ब्लॉक है, और OAEP पैडिंग उसमें से 2 * hashLen + 2 बाइट्स खा लेती है (SHA-256 के लिए 98), संदेश के लिए 190 बाइट्स छोड़कर। यह डिज़ाइन द्वारा है — RSA कुंजीयों और हस्ताक्षरों के लिए है, थोक डेटा के लिए नहीं। मानक पैटर्न “हाइब्रिड” है: थोक डेटा को AES से एन्क्रिप्ट करें (सिमेट्रिक औज़ार उपयोग करें), फिर केवल AES कुंजी को RSA से एन्क्रिप्ट करें।

2048, 3072, या 4096 बिट्स?#

2048 वर्तमान आधार है और अधिकांश उपयोगों के लिए अभी भी पर्याप्त माना जाता है। 3072 लगभग 128-बिट सिमेट्रिक शक्ति से मेल खाता है; 4096 उन कुंजीयों के लिए रूढ़िवादी विकल्प है जिन्हें आप एक दशक या अधिक टिकाना चाहते हैं। हर चरण ऊपर कुंजी निर्माण और हर ऑपरेशन पर वास्तविक समय लागत करता है, घटती सुरक्षा प्रतिफल के साथ।

एन्क्रिप्ट करने और हस्ताक्षर करने में क्या अंतर है?#

एन्क्रिप्शन गोपनीयता के बारे में है: सार्वजनिक कुंजी लॉक करती है, निजी कुंजी अनलॉक करती है। साइनिंग प्रामाणिकता के बारे में है: निजी कुंजी हस्ताक्षर बनाती है, सार्वजनिक कुंजी उसे जाँचती है। वे वही कुंजी जोड़ी उपयोग करते हैं पर अलग एल्गोरिदम (OAEP बनाम PKCS#1) और अलग सवालों के जवाब देते हैं — “क्या कोई इसे पढ़ सकता है?” बनाम “क्या इस कुंजी का धारक वास्तव में इसे बनाता है?”।

जब मैं अपनी निजी कुंजी उत्पन्न करता या उपयोग करता हूँ तो क्या वह कहीं भेजी जाती है?#

नहीं। निर्माण, एन्क्रिप्शन, डिक्रिप्शन, साइनिंग, और सत्यापन सब पेज के भीतर Web Crypto द्वारा किए जाते हैं। PEM ब्लॉक केवल आपके ब्राउज़र टैब में मौजूद हैं; कुछ भी प्रेषित नहीं होता। यदि आप किसी प्रोडक्शन निजी कुंजी को संभाल रहे हैं, तो उसे किसी ऐसे वातावरण में उत्पन्न करें जिस पर आप नियंत्रण रखते हैं, बजाय उसे किसी वेब पेज में सर्वथा चिपकाने के।