मुख्य सामग्री पर जाएँ
Tooletto

Base64 एनकोडर और डिकोडर

टेक्स्ट को Base64 में एनकोड करें या Base64 को वापस टेक्स्ट में डिकोड करें, पूरे Unicode सपोर्ट के साथ और टोकन व URL के लिए एक Base64URL मोड। सब कुछ आपके ब्राउज़र में लोकल रूप से चलता है।

  • फ़ाइलें कभी आपकी डिवाइस से बाहर नहीं जातीं
  • मुफ़्त, बिना साइन-अप
  • कोई वॉटरमार्क नहीं
  • लोड होने के बाद ऑफ़लाइन भी काम करता है
Loading tool…

Base64 एनकोडर और डिकोडर कैसे करें

  1. 1

    एक दिशा चुनें

    एनकोड और डिकोड के बीच बदलें।

  2. 2

    अपना डेटा डालें

    इनपुट बॉक्स में टाइप करें या पेस्ट करें। आपके टाइप करते ही कन्वर्ज़न होता है।

  3. 3

    नतीजा कॉपी करें

    आउटपुट कॉपी करें, या इसे टेक्स्ट फ़ाइल के रूप में डाउनलोड करें।

Base64 असल में क्या हल करता है

Base64 इसलिए मौजूद है क्योंकि टेक्स्ट के इर्द-गिर्द बना ज़्यादातर इंफ्रास्ट्रक्चर — मेल, JSON, XML, URL — मनमाने बाइनरी बाइट भरोसे के साथ नहीं ले जा सकता, जिनमें कंट्रोल कैरेक्टर, नल बाइट, या ऐसे बाइट सीक्वेंस हो सकते हैं जो किसी स्ट्रिंग को समय से पहले ख़त्म कर दें या किसी पार्सर को सीधे तोड़ दें। Base64 मनमाने बाइनरी डेटा के हर तीन बाइट को 64 के एक तय सेट से निकाले गए चार कैरेक्टर पर मैप करता है जिसे कोई भी टेक्स्ट-आधारित सिस्टम सुरक्षित रूप से संभालता है — अक्षर, अंक और दो चिह्न — तो एनकोड किया गया नतीजा JSON में एम्बेड हो सकता है, मेल अटैचमेंट के रूप में भेजा जा सकता है, या किसी दस्तावेज़ में शामिल हो सकता है बिना कि आगे कुछ भी इसे सादे टेक्स्ट से अलग किसी चीज़ के रूप में ग़लत समझे।

उस सुरक्षा की क़ीमत तय और अनिवार्य है: हर तीन इनपुट बाइट के लिए चार आउटपुट कैरेक्टर, लगभग 33% का विस्तार, चाहे अंतर्निहित डेटा कुछ भी हो। यह सिर्फ़-टेक्स्ट चैनल के ज़रिए गारंटीशुदा सुरक्षित पास होने के लिए चुकाई गई क़ीमत है, किसी ख़ास इम्प्लीमेंटेशन की ख़ामी नहीं।

Unicode की वह ग़लती जो भोली इम्प्लीमेंटेशन को तोड़ देती है

ब्राउज़र का बिल्ट-इन `btoa` फ़ंक्शन, जिस पर कई तेज़ Base64 इम्प्लीमेंटेशन सीधे निर्भर करते हैं, U+00FF कोड पॉइंट से ऊपर किसी भी कैरेक्टर पर पहुँचते ही एरर देता है — इसमें लगभग हर इमोजी, चीनी, जापानी, कोरियाई, सिरिलिक, ग्रीक और अरबी, साथ ही फ़्रेंच, जर्मन, स्पैनिश और दूसरी भाषाओं में इस्तेमाल होने वाले काफ़ी सारे एक्सेंट वाले लैटिन कैरेक्टर शामिल हैं। यह किसी दुर्लभ इनपुट को प्रभावित करने वाला अस्पष्ट किनारा-मामला नहीं है; यह असली दुनिया के टेक्स्ट के एक बहुत बड़े हिस्से को प्रभावित करता है, और यही वजह है कि हाथ से बनाए इतने सारे Base64 टूल सादे अंग्रेज़ी इनपुट के टेस्ट में बिल्कुल सही काम करते हैं और फिर पहली बार फ़ेल हो जाते हैं जब कोई यूज़र इमोजी या ग़ैर-लैटिन नाम वाला कुछ पेस्ट करता है।

सही उपाय है टेक्स्ट को पहले UTF-8 बाइट के रूप में एनकोड करना, फिर उन बाइट को Base64 में एनकोड करना — यही सही तरीक़े से बने एनकोडर करते हैं और यही यह टूल करता है — बजाय Unicode कोड पॉइंट को सीधे 256 से नीचे के बाइट सीक्वेंस के लिए बनी एनकोडिंग में डालने की कोशिश करने के।

Base64URL: URL और टोकन के लिए बना वैरिएंट

स्टैंडर्ड Base64 के कैरेक्टर सेट में `+` और `/` शामिल हैं, दोनों का किसी URL में अलग मतलब है — `+` कभी-कभी स्पेस के रूप में समझा जाता है, और `/` एक पाथ सेपरेटर है — तो सीधे किसी क्वेरी स्ट्रिंग या फ़ाइल नाम में पेस्ट की गई स्टैंडर्ड Base64 स्ट्रिंग उस URL को पार्स करने वाली किसी भी चीज़ से गुज़रते समय चुपचाप बिगड़ या कट सकती है। Base64URL इन दो कैरेक्टर को `-` और `_` से बदल देता है, जिनमें से किसी का भी URL में कोई ख़ास मतलब नहीं है, और आमतौर पर अंत के `=` पैडिंग कैरेक्टर भी हटा देता है, जो सिर्फ़ लंबाई बताने के लिए मौजूद होते हैं और डिकोडर को पहले से उनकी उम्मीद होने पर ज़रूरी नहीं रहते।

JSON Web Token ठीक इसी वजह से Base64URL इस्तेमाल करते हैं: कोई JWT किसी HTTP Authorization हेडर और कभी-कभी किसी URL के अंदर यात्रा करने के लिए बनाया गया है, और स्टैंडर्ड Base64 के रिज़र्व्ड कैरेक्टर इसे अविश्वसनीय बना देंगे।

Base64 एनकोडिंग है, सुरक्षा नहीं

यह साफ़ तौर पर कहना ज़रूरी है क्योंकि यह ग़लतफ़हमी अक्सर सामने आती है: Base64 शून्य गोपनीयता देता है। इस प्रोसेस में किसी भी बिंदु पर कोई गुप्त कुंजी शामिल नहीं होती, तो कोई भी जो Base64 स्ट्रिंग पाता है वह इसे किसी भी स्टैंडर्ड लाइब्रेरी कॉल या ठीक इस जैसे किसी टूल का इस्तेमाल करके तुरंत मूल डेटा में वापस डिकोड कर सकता है। किसी पासवर्ड या API कुंजी को स्टोर या ट्रांसमिट करने से पहले Base64 में एनकोड करना बिल्कुल कोई सुरक्षा नहीं देता — यह सिर्फ़ एक सरसरी नज़र से वैल्यू छुपाता है, जो असली सुरक्षा से बिल्कुल अलग गुण है।

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

क्या यह इमोजी और दूसरी भाषाओं के टेक्स्ट को संभालता है?

हाँ। Base64 से पहले टेक्स्ट UTF-8 के रूप में एनकोड होता है, यही वजह है कि एक्सेंट, चीनी अक्षर और इमोजी सही तरीक़े से दोनों दिशाओं में कन्वर्ट होते हैं। ब्राउज़र के कच्चे `btoa` पर बने टूल U+00FF से ऊपर किसी भी कैरेक्टर पर एरर देते हैं — यह एक बहुत आम ग़लती है।

Base64URL क्या है और मुझे इसकी ज़रूरत कब है?

एक वैरिएंट जो `+` को `-` से और `/` को `_` से बदल देता है, और `=` पैडिंग हटा देता है, तो नतीजा किसी URL या फ़ाइल नाम के अंदर सुरक्षित रहता है। JSON Web Token इसे इस्तेमाल करते हैं। स्टैंडर्ड Base64 किसी क्वेरी स्ट्रिंग में पेस्ट करने पर टूट जाता है।

क्या Base64 एनक्रिप्शन का एक रूप है?

नहीं। यह बाइनरी डेटा को सिर्फ़-टेक्स्ट चैनल के ज़रिए ले जाने के लिए बनी एक एनकोडिंग है, और कोई भी इसे तुरंत पलट सकता है। इसे कभी पासवर्ड, कुंजी या निजी डेटा छुपाने के लिए इस्तेमाल न करें।

मेरा Base64 आउटपुट इनपुट से बड़ा क्यों है?

Base64 हर तीन बाइट को चार कैरेक्टर के रूप में दर्शाता है, तो आउटपुट हमेशा लगभग 33% बड़ा होता है। यह अतिरिक्त खर्च टेक्स्ट के रूप में सुरक्षित रूप से भेजे जाने की क़ीमत है।

Base64 एनकोडर और डिकोडर के सामान्य काम