Base64 क्या है? एन्कोडिंग समझें
Base64 बाइनरी डेटा — इमेज, फ़ाइल, एन्क्रिप्टेड बाइट्स, कुछ भी — को सिर्फ़ 64 प्रिंट होने योग्य कैरेक्टर (A–Z, a–z, 0–9, + और /) से दिखाने का तरीका है। यह इसलिए है क्योंकि कई चैनल टेक्स्ट के लिए बने थे: ईमेल, JSON, XML, URL, HTTP हेडर और कुकी सभी Base64 स्ट्रिंग सुरक्षित रूप से ले जा सकते हैं जहाँ कच्चे बाइट्स बिगड़ जाते या रिजेक्ट हो जाते।
यह गाइड बताती है कि एन्कोडिंग कैसे काम करती है, यह कब सही विकल्प है, Base64 और Base64URL में क्या फ़र्क़ है, और वे गलतियाँ जो बिगड़ा आउटपुट देती हैं — सबसे अहम गलती समेत: Base64 एन्क्रिप्शन नहीं है।
Base64 एन्कोडिंग कैसे काम करती है
Base64 इनपुट को एक बार में तीन बाइट (24 बिट) लेता है और उन्हें छह-छह बिट के चार ग्रुप में बाँटता है। हर छह-बिट वैल्यू (0–63) अल्फ़ाबेट के एक कैरेक्टर से मैप होती है। तीन बाइट अंदर, चार कैरेक्टर बाहर — इसीलिए Base64 आउटपुट हमेशा इनपुट से लगभग 33% बड़ा होता है।
जब इनपुट की लंबाई तीन का गुणज नहीं होती, आख़िरी ग्रुप को ज़ीरो बिट से भरा जाता है और एक या दो "=" जोड़े जाते हैं ताकि डिकोडर जाने कि कितने असली बाइट की उम्मीद करनी है।
Text: Hi!
Bytes: 01001000 01101001 00100001
Groups: 010010 000110 100100 100001
Index: 18 6 36 33
Base64: S G k h → "SGkh"
Text: Hi (2 bytes → one "=" of padding)
Base64: SGk=Base64 एन्क्रिप्शन नहीं है
कोई भी Base64 को बिना key के तुरंत डिकोड कर सकता है — यह उलटने योग्य एन्कोडिंग है, जैसे किसी नंबर को हेक्साडेसिमल में लिखना। यह कुछ नहीं छिपाता। Base64 से "प्रोटेक्ट" किया पासवर्ड, API key या टोकन उसे देखने वाले हर व्यक्ति के सामने खुला है। डेटा प्रोटेक्ट करने के लिए असली एन्क्रिप्शन (AES, TLS) इस्तेमाल करें और Base64 सिर्फ़ उसे ले जाने के लिए।
Base64 कब इस्तेमाल करें
- छोटी इमेज या फ़ॉन्ट को HTML, CSS या JSON में data: URI के रूप में एम्बेड करना।
- JSON या XML पेलोड के अंदर बाइनरी कंटेंट भेजना, जो सिर्फ़ टेक्स्ट रख सकते हैं।
- HTTP Basic ऑथेंटिकेशन: हेडर में "username:password" का Base64 जाता है (सिर्फ़ ट्रांसपोर्ट — हमेशा HTTPS पर)।
- JWT और दूसरे टोकन, जो अपने हेडर, पेलोड और सिग्नेचर के लिए URL-सेफ़ वेरिएंट इस्तेमाल करते हैं।
- ईमेल अटैचमेंट (MIME) और कोई भी पुराना प्रोटोकॉल जो 7-बिट टेक्स्ट की उम्मीद करता है।
- बड़ी फ़ाइलों के लिए नहीं, जहाँ बाइनरी चैनल मौजूद है — 33% ओवरहेड और अतिरिक्त एन्कोडिंग स्टेप सरासर बर्बादी है।
Base64 बनाम Base64URL
स्टैंडर्ड Base64 "+" और "/" इस्तेमाल करता है, दोनों का URL में ख़ास मतलब है, और "=" पैडिंग जो अक्सर परसेंट-एन्कोड होती है। Base64URL (RFC 4648 §5) इन्हें "-" और "_" से बदलता है और आमतौर पर पैडिंग हटा देता है, ताकि नतीजा URL, फ़ाइल नाम या JWT में बिना और एस्केपिंग के इस्तेमाल हो सके। एक वेरिएंट की उम्मीद करने वाला डिकोडर दूसरे को रिजेक्ट करेगा, और "वैध" टोकन के डिकोड न होने की यह सबसे आम वजह है।
टेक्स्ट एन्कोड करना: कैरेक्टर सेट पर ध्यान दें
Base64 बाइट्स एन्कोड करता है, कैरेक्टर नहीं, इसलिए टेक्स्ट को पहले बाइट्स में बदलना पड़ता है — लगभग हमेशा UTF-8 में। हिंदी, अरबी और इमोजी मल्टी-बाइट सीक्वेंस बनते हैं; अगर एन्कोडर UTF-8 इस्तेमाल करे और डिकोडर Latin-1 मान ले (या उल्टा) तो आउटपुट बिगड़ा हुआ (mojibake) होगा। जब दो सिस्टम किसी Base64 स्ट्रिंग पर असहमत हों, तो कैरेक्टर सेट सबसे पहले जाँचने की चीज़ है।
डिकोडिंग क्यों फ़ेल होती है
- गलत अल्फ़ाबेट — Base64URL स्ट्रिंग ("-", "_") स्टैंडर्ड डिकोडर को दी गई, या उल्टा।
- पैडिंग गायब या ज़्यादा — कुछ एन्कोडर "=" छोड़ देते हैं, और सख़्त डिकोडर चार के गुणज की लंबाई माँगते हैं।
- स्ट्रिंग के अंदर व्हाइटस्पेस या लाइन ब्रेक — MIME 76 कैरेक्टर पर लाइन रैप करता है; डिकोड करने से पहले हटाएँ।
- डबल एन्कोडिंग — दो बार Base64-एन्कोड की गई स्ट्रिंग वैध दिखती है लेकिन डिकोड होकर और Base64 देती है।
- यह Base64 था ही नहीं — hex, हैश या रैंडम टोकन मिलता-जुलता लग सकता है। Base64 ठीक 64 कैरेक्टर और "=" इस्तेमाल करता है, और पैडेड होने पर उसकी लंबाई चार का गुणज होती है।
अक्सर पूछे जाने वाले सवाल
क्या Base64 सुरक्षित है?
नहीं। यह बिना key की उलटने योग्य एन्कोडिंग है। यह कोई गोपनीयता नहीं देता; उसके लिए एन्क्रिप्शन इस्तेमाल करें।
Base64 "=" या "==" पर क्यों ख़त्म होता है?
पैडिंग। इनपुट तीन-तीन बाइट के ग्रुप में प्रोसेस होता है; जब एक या दो बाइट बचते हैं, "==" या "=" जोड़ा जाता है ताकि डिकोडर असली लंबाई जाने।
Base64 आउटपुट कितना बड़ा होता है?
लगभग 33% — हर 3 बाइट 4 कैरेक्टर बनते हैं। 300 KB की इमेज लगभग 400 KB टेक्स्ट बन जाती है।
क्या Base64 इमेज या PDF एन्कोड कर सकता है?
हाँ — Base64 किसी भी बाइट्स पर काम करता है। इसी तरह data: URI HTML में इमेज एम्बेड करते हैं और फ़ाइलें JSON API के अंदर जाती हैं।
Base64 और hex में क्या फ़र्क़ है?
दोनों बाइट्स को टेक्स्ट के रूप में दिखाते हैं। Hex 16 कैरेक्टर इस्तेमाल करता है और साइज़ दोगुना करता है (प्रति बाइट 2 कैरेक्टर); Base64 64 कैरेक्टर इस्तेमाल करता है और साइज़ एक-तिहाई बढ़ाता है। Hex पढ़ने में आसान है; Base64 ज़्यादा कॉम्पैक्ट।
Base64 और URL एन्कोडिंग में क्या फ़र्क़ है?
URL (परसेंट) एन्कोडिंग सिर्फ़ URL में असुरक्षित कैरेक्टर को एस्केप करती है, सामान्य अक्षर वैसे ही रहते हैं। Base64 हर बाइट को फिर से एन्कोड करता है। ये अक्सर साथ आते हैं: क्वेरी पैरामीटर में जाने से पहले Base64 स्ट्रिंग को परसेंट-एन्कोडिंग चाहिए हो सकती है, जब तक URL-सेफ़ वेरिएंट न इस्तेमाल हो।
इस गाइड में बताए गए टूल्स
टेक्स्ट या फ़ाइलों को अपने ब्राउज़र में ही Base64 (स्टैंडर्ड या URL-सुरक्षित) में एन्कोड करें।
Base64 या Base64url स्ट्रिंग को टेक्स्ट में डिकोड करें, पैडिंग अपने आप ठीक होने के साथ।
URL, क्वेरी स्ट्रिंग और फ़ॉर्म डेटा में सुरक्षित इस्तेमाल के लिए टेक्स्ट को percent-encode करें।
टेक्स्ट को हेक्साडेसिमल बाइट (UTF-8) में बदलें, मनचाहे सेपरेटर और केसिंग के साथ।
टेक्स्ट को बाइनरी (बिट) में और बाइनरी को वापस टेक्स्ट में बदलें।
JWT का हेडर और पेलोड डिकोड करें, क्लेम जाँचें और एक्सपायरी देखें — पूरी तरह आपके ब्राउज़र में।