सभी लेख

Base64: एन्कोडिंग किस लिए है और यह कैसे काम करता है

Base64 किसी भी बाइनरी डेटा को केवल अक्षरों, अंकों और +, /, = जैसे वर्णों से बने टेक्स्ट के रूप में दर्शाने का तरीका है। यह डेटा को न तो संपीड़ित करता है और न ही एन्क्रिप्ट करता है — नतीजा लगभग एक-तिहाई बड़ा होता है, और एल्गोरिद्म जानने वाला कोई भी व्यक्ति मूल सामग्री पढ़ सकता है।

एन्कोडिंग कैसे काम करती है

इनपुट बाइट्स को तीन-तीन के समूह (24 बिट) में बाँटा जाता है और चार छह-बिट ब्लॉकों में विभाजित किया जाता है। हर ब्लॉक Base64 वर्णमाला (A–Z, a–z, 0–9, +, /) के एक वर्ण से मेल खाता है। यदि इनपुट डेटा की लंबाई तीन बाइट्स की गुणज नहीं है, तो अंत में भराव वर्ण = जोड़ा जाता है।

यह क्यों ज़रूरी है

कई प्रोटोकॉल और फ़ॉर्मेट — ईमेल (MIME), URL, JSON, XML — टेक्स्ट के लिए डिज़ाइन किए गए हैं और "कच्चे" बाइट्स को सही तरीके से नहीं संभाल पाते: शून्य बाइट्स, नियंत्रण वर्ण, या ऐसे अनुक्रम जो फ़ॉर्मेट के अपने सिंटैक्स से टकराते हों। Base64 किसी भी बाइनरी डेटा को सुरक्षित टेक्स्ट में बदलकर इस सीमा को दूर करता है।

सामान्य उपयोग

  • MIME के ज़रिए ईमेल अटैचमेंट।
  • JSON API में इमेज या छोटी फ़ाइलें भेजना।
  • डेटाबेस या कॉन्फ़िगरेशन फ़ाइल के टेक्स्ट फ़ील्ड में बाइनरी डेटा स्टोर करना।
  • JWT के header और payload हिस्सों को एन्कोड करना।

Base64 क्या नहीं है

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

स्टैंडर्ड और URL-safe अल्फ़ाबेट

क्लासिक Base64 अल्फ़ाबेट + और / वर्णों का इस्तेमाल करता है, जिनका URL में विशेष अर्थ होता है। ऐसे मामलों के लिए Base64URL वेरिएंट मौजूद है, जिसमें + को - से और / को _ से बदल दिया जाता है। अगर स्टैंडर्ड एन्कोडिंग का नतीजा बिना अतिरिक्त percent-encoding के URL में डाला जाए, तो + और / वर्ण पते को बिगाड़ सकते हैं या पाथ के सेपरेटर से टकरा सकते हैं।

आम गलती: अधूरा या "बिगड़ा हुआ" पैडिंग

स्ट्रिंग के अंत में = वर्ण कोई फ़ालतू चीज़ नहीं, बल्कि एन्कोडिंग का हिस्सा है, जो बताता है कि आखिरी ब्लॉक में कितने बाइट्स कम हैं। अगर Base64 स्ट्रिंग को अधूरा कॉपी किया जाए या पैडिंग को मैन्युअल रूप से हटा दिया जाए, तो डिकोडर एरर देगा या नतीजा अधूरा आएगा। कुछ सिस्टम (जैसे JWT) जानबूझकर = हटा देते हैं, और तब डिकोड करने से पहले लंबाई वापस जोड़नी पड़ती है।

टूल आज़माएँ