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

Base64, Base64URL, Base32 और हेक्स को एनकोड और डिकोड करें — टेक्स्ट आपके टाइप करते ही लाइव, फ़ाइलें ड्रैग और ड्रॉप से — एक ऐसे डिकोडर के साथ जो इतना सख़्त है कि कंधे उचकाने के बजाय पहले उस वर्ण की ठीक-ठीक स्थिति बता दे जो वहाँ होना ही नहीं चाहिए। सब कुछ आपके ब्राउज़र में चलता है: लोग जो स्ट्रिंग डिकोड करते हैं, वे इतनी अक्सर टोकन और रहस्य होती हैं कि उन्हें किसी सर्वर पर भेजना, या लॉग होने वाले AI चैट में चिपकाना, ठीक वही है जो किसी डिकोडर को आपसे कभी नहीं माँगना चाहिए।

फ़ाइलें

इस बॉक्स में कहीं भी फ़ाइल छोड़ें, तो वह ऊपर चुने गए प्रारूप में एनकोड हो जाएगी — आपको एनकोड किया गया टेक्स्ट और तैयार data URL मिलता है। या एनकोड किया गया टेक्स्ट यहाँ चिपकाएँ और डिकोड किए गए बाइट्स को फ़ाइल के रूप में डाउनलोड करें।

चार वर्णमालाएँ, एक ही काम

चारों प्रारूप एक ही काम करते हैं — मनमाने बाइट्स को केवल सुरक्षित, छपने योग्य वर्णों में लिखना — अलग-अलग दर्शकों के लिए। मानक Base64 ईमेल अटैचमेंट, कॉन्फ़िग फ़ाइलों और हज़ारों API का डिफ़ॉल्ट है। Base64URL उन दो वर्णों को बदल देता है जो URL तोड़ देते (+ और /) — उनकी जगह - और _ — पैडिंग हटा देता है, और हर JSON Web Token के अंदर यही वर्णमाला होती है — JWT डिकोडर से किसी एक को डिकोड करें और उसके तीनों खंड इसी प्रारूप में हैं। Base32 एक छोटी, केस-असंवेदनशील वर्णमाला उपयोग करता है जो बोलकर सुनाने और फिर से टाइप करने पर भी टिकी रहती है, इसीलिए TOTP प्रमाणक रहस्य इसी में जारी किए जाते हैं। Hex आकार दोगुना कर देता है और बदले में पूरी पारदर्शिता ख़रीदता है: एक बाइट, दो वर्ण, कुछ भी छिपा नहीं — हैश का प्रारूप, जिन्हें हैश जनरेटर बनाता है और हैश पहचानकर्ता पहचानता है।

यह सख़्ती जानबूझकर है, और यही एक डिकोडर और डीबगिंग टूल के बीच का अंतर है। atob() जैसे ब्राउज़र के अंतर्निर्मित साधन एक ही सामान्य त्रुटि फेंकते हैं — चाहे स्ट्रिंग में स्थिति 4 पर टाइप की ग़लती हो या वह स्ट्रिंग Base64 हो ही नहीं। यह डिकोडर वर्ण-दर-वर्ण सत्यापन करता है और पहली असफल स्थिति बताता है — JSON से घसीटा गया उद्धरण चिह्न, वहाँ + जहाँ URL-सुरक्षित वर्णमाला होनी चाहिए, बीच में फँसी पैडिंग, या एक अंतिम वर्ण जिसके बचे हुए बिट शून्य नहीं हैं, जिसका मतलब है कि स्ट्रिंग एनकोड करने के बाद संपादित की गई। "यह डिकोड नहीं हो रहा" वाले नब्बे प्रतिशत रहस्य उस एक स्थिति पर दिख जाते हैं, जैसे ही कोई उसकी ओर इशारा करे। और क्योंकि इस काम में इतनी अक्सर क्रेडेंशियल शामिल होते हैं — Kubernetes रहस्य Base64 है (एक एनकोडिंग, कभी एन्क्रिप्शन नहीं), किसी टोकन का पेलोड, कॉन्फ़िग फ़ाइल में कोई कुंजी — इसलिए पूरा रूपांतरण स्थानीय रूप से होता है, उसी नियम के अनुसार जो .env सत्यापनकर्ता का है: संवेदनशील इनपुट कभी प्रसारित नहीं होता। साथी लेख, Base64 एन्क्रिप्शन नहीं है, इस अंतर के महत्व पर लंबा तर्क है।

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

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

नहीं। Base64 एक एनकोडिंग है — कोई कुंजी और कोई गोपनीयता नहीं, बस एक प्रतिवर्ती भेष-बदल। जो कोई Base64 स्ट्रिंग देखता है, वह उसे तुरंत डिकोड कर सकता है, इसीलिए "API कुंजी कॉन्फ़िग में Base64-एनकोड की गई है" का मतलब है कि API कुंजी व्यावहारिक रूप से कॉन्फ़िग में सादे टेक्स्ट में है। लेख Base64 एन्क्रिप्शन नहीं है एनकोडिंग, एन्क्रिप्शन और हैशिंग को सुलझाता है, और वे ग़लतियाँ भी जो हर भ्रम पैदा करता है।

यह डिकोडर मुझे त्रुटि की ठीक-ठीक स्थिति क्यों बताता है?

क्योंकि बिना स्थिति के "अमान्य वर्ण" वही तरीका है जिससे सामान्य डिकोडर आपकी दोपहर बर्बाद करते हैं। चिपकाई गई स्ट्रिंग आमतौर पर तीन कारणों में से एक से असफल होती है: आसपास के टेक्स्ट से आया कोई भटका हुआ वर्ण (उद्धरण चिह्न, अल्पविराम, लॉग की एक पंक्ति), ग़लत वर्णमाला (मानक डिकोडर को दी गई URL-सुरक्षित स्ट्रिंग), या अधूरी कॉपी। यहाँ पहले दोषी वर्ण को उसके सूचकांक के साथ नाम से बताया जाता है, ताकि आप ठीक उसी जगह देखकर समझ सकें कि तीनों में से क्या हुआ।

Base64 और Base64URL में क्या अंतर है?

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

क्या यहाँ किसी टोकन या रहस्य को डिकोड करना सुरक्षित है?

हाँ — रूपांतरण आपके ब्राउज़र में, इसी पेज पर चलता है, और आप जो कुछ भी चिपकाते हैं, वह न प्रसारित होता है, न संग्रहीत। यह इसलिए मायने रखता है, क्योंकि लोग जो चीज़ें डिकोड करते हैं, वे इतनी अक्सर क्रेडेंशियल होती हैं: कॉन्फ़िग फ़ाइल में एक Base64 ब्लॉक, एक Kubernetes रहस्य (वह Base64 है, एन्क्रिप्शन नहीं — ऊपर का प्रश्न देखें), किसी टोकन का पेलोड। वही स्ट्रिंग किसी AI चैट में चिपकाने से उसकी एक प्रति लॉग होने वाले तृतीय-पक्ष सिस्टम को चली जाती है; देखें किसी चैटबॉट को अपने रहस्य कभी न सौंपें।

मेरी फ़ाइल "मान्य UTF-8 नहीं" के रूप में क्यों डिकोड हुई?

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