Base64 क्या है और यह क्यों मौजूद है
Base64 एक बाइनरी-से-टेक्स्ट एन्कोडिंग योजना है। यह कच्ची बाइट्स को लेती है — वह डेटा जो छवियों, अभिलेखों, क्रिप्टोग्राफ़िक कुंजियों, या किसी भी ऐसी चीज़ का निर्माण करता है जो सीधी पठनीय टेक्स्ट नहीं है — और उन्हें 64 प्रिंट करने योग्य अक्षरों की एक छोटी, सुरक्षित वर्णमाला से दोबारा लिखती है: 26 बड़े अक्षर A-Z, 26 छोटे अक्षर a-z, दस अंक 0-9, और दो अतिरिक्त चिह्न, आमतौर पर + और /। अंत में पैडिंग के लिए एक बराबर का चिह्न इस्तेमाल होता है। चूँकि यह जो भी अक्षर बनाती है वह साधारण ASCII होता है, इसका परिणाम उन सिस्टमों से होकर गुज़र सकता है जो केवल टेक्स्ट सँभालने के लिए बनाए गए थे।
यही पूरी वजह है जिसके लिए Base64 बनाई गई थी। कई पुराने प्रोटोकॉल — ईमेल इसका शास्त्रीय उदाहरण है — यह मानकर चलते हैं कि वे जो सामग्री ढोते हैं वह टेक्स्ट है। यदि आप उन्हें कच्ची बाइनरी थमा दें, तो कुछ बाइट्स विकृत हो जाती हैं, हटा दी जाती हैं, या कंट्रोल अक्षरों के रूप में पढ़ ली जाती हैं, और डेटा भ्रष्ट होकर पहुँचता है। Base64 इस समस्या को दरकिनार कर देती है, बाइट्स को ऐसे रूप में बदलकर जिसे कोई भी टेक्स्ट-सुरक्षित चैनल बिना छेड़े गुज़र जाने देगा। मूल डेटा को दूसरी ओर ठीक उसी रूप में फिर से बनाया जा सकता है।

रूपांतरण कैसे काम करता है
यांत्रिक रूप से, Base64 इनपुट को तीन-तीन बाइट्स के टुकड़ों में बाँटती है — यानी 24 बिट — और फिर उन्हीं 24 बिट्स को छह-छह बिट के चार समूहों में दोबारा काटती है। छह बिट 64 संभावित मानों को दर्शा सकते हैं, और ठीक इसीलिए वर्णमाला में 64 अक्षर हैं। इसलिए इनपुट की तीन बाइट्स हमेशा आउटपुट के चार अक्षर बन जाती हैं। जब इनपुट की लंबाई तीन का साफ़ गुणज नहीं होती, तो एन्कोडर आख़िरी समूह को एक या दो = अक्षरों से पैड कर देता है ताकि डिकोडर जान सके कि असली डेटा कहाँ ख़त्म होता है।
यही चार-बदले-तीन का अनुपात उस मशहूर आकार-दंड का भी स्रोत है: Base64 का आउटपुट मूल डेटा से लगभग 33% बड़ा होता है। यदि एन्कोडेड टेक्स्ट को निश्चित-चौड़ाई वाली पंक्तियों में लपेटा जाए, जैसा ईमेल मानक अक्सर माँगते हैं, तो आप लाइन ब्रेक के लिए उसके ऊपर कुछ और प्रतिशत चुकाते हैं। यह अतिरिक्त भार अनुकूलता की क़ीमत है, और अधिकांश उपयोगों के लिए यह एक उचित सौदा है।
आप Base64 से कहाँ टकराते हैं
एक बार जानने के बाद कि क्या देखना है, Base64 रोज़मर्रा की कंप्यूटिंग में हर जगह दिख जाती है:
- डेटा URI। किसी छोटी छवि या फ़ॉन्ट को सीधे HTML या CSS में किसी
data:URI के साथ एम्बेड किया जा सकता है, जहाँ फ़ाइल की सामग्री Base64 के रूप में लिख दी जाती है। ब्राउज़र इसे इनलाइन डिकोड कर देता है, जिससे एक अलग नेटवर्क अनुरोध बच जाता है। - ईमेल अटैचमेंट। MIME, वह मानक जो ईमेल को फ़ाइलें ढोने देता है, किसी टेक्स्ट-मात्र मेल सिस्टम से बाइनरी अटैचमेंट को बिना क्षति के ले जाने के लिए Base64 पर टिका रहता है।
- HTTP बेसिक प्रमाणीकरण। परिचित
Authorization: Basic ...हेडर बस एक यूज़रनेम और पासवर्ड होता है जो कोलन से जुड़े हुए और Base64-एन्कोडेड होते हैं — और ठीक यही वजह है कि बेसिक ऑथ हमेशा HTTPS पर ही चलना चाहिए। - टोकन और कॉन्फ़िग। JSON वेब टोकन, प्रमाणपत्र, SSH कुंजियाँ, और अनगिनत कॉन्फ़िगरेशन मान Base64 के रूप में संग्रहीत या प्रेषित होते हैं ताकि वे कॉपी-पेस्ट और टेक्स्ट-आधारित भंडारण से बचे रहें।
एन्कोडिंग एन्क्रिप्शन नहीं है
यह समझने वाली सबसे महत्वपूर्ण बात है, और यह नौसिखियों तथा अनुभवी डेवलपरों दोनों को एक जैसा उलझाती है। Base64 एन्क्रिप्शन नहीं है और बिल्कुल भी कोई सुरक्षा प्रदान नहीं करती। इसमें कोई गुप्त कुंजी नहीं, कोई पासवर्ड नहीं, और इसमें कुछ भी निजी नहीं है। यह रूपांतरण पूरी तरह सार्वजनिक और पूरी तरह उलटाने योग्य है: जो भी कोई Base64 स्ट्रिंग देखता है वह एक सेकंड में, ठीक इसी जैसे टूल से, उसे वापस मूल बाइट्स में डिकोड कर सकता है।
इसलिए Base64 पासवर्ड, API कुंजियों, या किसी भी संवेदनशील मान को छिपाने की एक ख़राब जगह है। यदि कोई स्ट्रिंग महज़ दिखने में गड्डमड्ड लगती है, तो इससे वह सुरक्षित नहीं हो जाती। इसके विपरीत, एन्क्रिप्शन डेटा को एक गुप्त कुंजी से रूपांतरित करता है ताकि केवल वही उसे पढ़ सके जिसके पास वह कुंजी हो। ये दोनों अलग-अलग समस्याएँ हल करती हैं: एन्क्रिप्शन गोपनीयता की रक्षा करता है, Base64 अनुकूलता की। इन्हें अक्सर साथ इस्तेमाल किया जाता है — आप शायद डेटा को AES से एन्क्रिप्ट करें और फिर सायफ़रटेक्स्ट को Base64-एन्कोड करें ताकि वह किसी टेक्स्ट चैनल से गुज़र सके — पर एक कभी दूसरे का विकल्प नहीं होता।

एन्कोड बनाम डिकोड
दोनों दिशाएँ एक-दूसरे की सरल दर्पण छवियाँ हैं। एन्कोडिंग आपके मूल टेक्स्ट या बाइनरी को लेती है और Base64 अक्षर स्ट्रिंग बनाती है। डिकोडिंग एक Base64 स्ट्रिंग लेती है और ठीक मूल बाइट्स को फिर से बना देती है। हमारा टूल दोनों काम सीधे आपके ब्राउज़र में करता है — आप जो भी टाइप या पेस्ट करते हैं वह कभी किसी सर्वर पर नहीं भेजा जाता, इसलिए यह क्रिया पूरी तरह स्थानीय और निजी है। इससे यह सुरक्षित हो जाता है कि आप किसी टोकन को डीबग करते हुए उसे डिकोड करें या किसी स्निपेट को एम्बेड करने के लिए एन्कोड करें, और आपका डेटा पृष्ठ से बाहर न जाए।
संबंधित रूपांतरणों के लिए, पर्सेंट-एन्कोडिंग हेतु हमारा URL एन्कोड/डिकोड टूल देखें, या जब आपको किसी टोकन के भीतर के Base64 खंडों की जाँच करनी हो तो JWT डिकोडर। ये आपको हमारे बाक़ी डेवलपर टूल के साथ-साथ मिलेंगे।
अक्सर पूछे जाने वाले सवाल
क्या Base64 एन्क्रिप्शन का एक रूप है?
नहीं। Base64 एक एन्कोडिंग है, एन्क्रिप्शन नहीं। यह किसी कुंजी का उपयोग नहीं करती और कोई भी इसे पूरी तरह उलटा सकता है, इसलिए यह कोई सुरक्षा नहीं देती। संवेदनशील डेटा की रक्षा के लिए AES या RSA जैसा असली एन्क्रिप्शन इस्तेमाल करें।
Base64 डेटा को बड़ा क्यों कर देती है?
Base64 इनपुट की हर तीन बाइट्स को चार आउटपुट अक्षरों में बदल देती है, जिससे आकार में लगभग 33% की बढ़ोतरी होती है। यदि आउटपुट को निश्चित-लंबाई वाली पंक्तियों में बाँटा जाए, तो लाइन ब्रेक उसके ऊपर कुछ और प्रतिशत जोड़ देते हैं।
Base64 किन अक्षरों का उपयोग करती है?
मानक वर्णमाला है 26 बड़े अक्षर, 26 छोटे अक्षर, अंक 0 से 9, साथ ही प्लस और स्लैश चिह्न, और अंत में पैडिंग के लिए इस्तेमाल होने वाला बराबर का चिह्न।
क्या मैं पासवर्ड सुरक्षित रूप से Base64 में संग्रहीत कर सकता हूँ?
नहीं। Base64 केवल यह बदलती है कि डेटा कैसा दिखता है, यह नहीं कि उसे कौन पढ़ सकता है। कोई भी इसे तुरंत डिकोड कर सकता है। पासवर्ड को किसी मज़बूत एल्गोरिदम से हैश किया जाना चाहिए, और रहस्यों को एन्क्रिप्ट किया जाना चाहिए।
क्या यह Base64 टूल निजी है?
हाँ। एन्कोडिंग और डिकोडिंग पूरी तरह आपके ब्राउज़र में होती है। आप जो भी दर्ज करते हैं वह न तो अपलोड होता है और न किसी सर्वर पर भेजा जाता है, इसलिए आपका डेटा आपके अपने डिवाइस पर ही रहता है।
एन्कोडिंग और डिकोडिंग में क्या फ़र्क है?
एन्कोडिंग मूल टेक्स्ट या बाइनरी को एक Base64 स्ट्रिंग में बदलती है। डिकोडिंग इसे उलट देती है, किसी Base64 स्ट्रिंग को वापस ठीक मूल बाइट्स में बदलते हुए। ये दर्पण क्रियाएँ हैं।
