गाइड

Base64 क्या है? इतिहास, काम करने का तरीका और उपयोग

जानें Base64 कहां से आया, 3 बाइट को 4 वर्णों में कैसे बदलता है, पैडिंग और base64url क्या हैं तथा इसका सही उपयोग कब करें।

एक वाक्य में Base64

Base64 बाइनरी डेटा को टेक्स्ट में दिखाने वाली एन्कोडिंग है। यह बाइट के किसी भी क्रम को 64 वर्णों की व्यापक रूप से समर्थित वर्णमाला वाली स्ट्रिंग में बदलता है। बाइट किसी फ़ोटो, PDF या शब्द के हों, एल्गोरिदम उन्हें टेक्स्ट-आधारित सिस्टम के लिए उपयुक्त रूप में रखता है।

यह रूपांतरण वापस पलटा जा सकता है और इसमें डेटा नहीं खोता, लेकिन यह एन्क्रिप्शन, हैश या कंप्रेशन नहीं है।

Base64 कहां से आया

शुरुआती नेटवर्क और ईमेल सिस्टम मनमाने 8-बिट मानों को हमेशा बिना बदलाव के नहीं ले जा पाते थे। कुछ गेटवे प्रिंट किए जा सकने वाले 7-बिट टेक्स्ट की अपेक्षा करते थे और बाइनरी डेटा बदल सकते थे। uuencode जैसी पुरानी विधियां भी यही समस्या हल करती थीं; RFC 1421 में Privacy-Enhanced Mail के लिए दी गई 64-वर्ण एन्कोडिंग आधुनिक Base64 की सीधी पूर्वज है।

बाद में MIME ने ईमेल के मुख्य भाग और अटैचमेंट के Content-Transfer-Encoding के लिए Base64 नाम अपनाया। 2006 का RFC 4648 मानक और URL-सुरक्षित वर्णमाला का सामान्य संदर्भ है। इसलिए Base64 किसी एक व्यक्ति की खोज नहीं, बल्कि आपस में काम करने वाले मानकों का विकास है।

64 वर्ण क्यों और 3 से 4 का नियम कैसे चलता है

6 बिट ठीक 64 मान, यानी 0 से 63 तक, दिखा सकते हैं। मानक Base64 इन्हें A–Z, a–z, 0–9, + और / से जोड़ता है। एन्कोडर 3 बाइट यानी 24 बिट पढ़ता है और उन्हें 6 बिट के 4 समूहों में बांटता है। हर मान वर्णमाला का सूचकांक बनकर एक वर्ण देता है।

“Man” के ASCII/UTF-8 बाइट से 19, 22, 5 और 46 सूचकांक मिलते हैं: T, W, F और u। आउटपुट TWFu है; डिकोडिंग यही रास्ता उल्टी दिशा में चलती है।

“Man” एक पूरा 24-बिट ब्लॉक भरता है, इसलिए पैडिंग की जरूरत नहीं होती।
इनपुट
Man
इनपुट बाइट
01001101 01100001 01101110
6-बिट समूह
010011 010110 000101 101110
वर्णमाला सूचकांक
19 · 22 · 5 · 46
Base64 आउटपुट
TWFu

पैडिंग, Unicode और base64url

अंतिम ब्लॉक में 1 बाइट हो तो 2 डेटा वर्णों के बाद == आता है; 2 बाइट हों तो 3 वर्णों के बाद =। पैडिंग डेटा नहीं छिपाती, केवल बताती है कि आखिरी 24-बिट ब्लॉक में कितना वास्तविक डेटा था। लंबाई किसी और तरीके से पता हो तो कुछ प्रोटोकॉल इसे हटा देते हैं।

Base64 बाइट पर काम करता है। हिन्दी, 中文 या इमोजी को पहले आम तौर पर UTF-8 बाइट में बदलना पड़ता है। URL और फ़ाइल नाम के लिए base64url + और / को - और _ से बदलता है। दोनों वर्णमालाएं संबंधित हैं, लेकिन प्रोटोकॉल देखे बिना उन्हें मिलाना नहीं चाहिए।

Base64 कहां सच में उपयोगी है

MIME ईमेल अटैचमेंट, प्रमाणपत्र या कुंजी के PEM ब्लॉक और छोटी इमेज या फ़ॉन्ट वाली data: URL इसके सामान्य उपयोग हैं। JSON और XML छोटे बाइनरी पेलोड को Base64 स्ट्रिंग में रख सकते हैं। HTTP Basic क्रेडेंशियल Base64 और JWT खंड base64url का उपयोग करते हैं; इससे सामग्री गुप्त नहीं हो जाती।

मुख्य बात संगतता है: बाहरी माध्यम टेक्स्ट चाहता है, जबकि पेलोड बाइट में है। यदि अपलोड, ऑब्जेक्ट स्टोरेज या डेटाबेस BLOB पहले से बाइनरी लेता है, तो Base64 अनावश्यक हो सकता है।

आकार और प्रदर्शन की कीमत

हर पूरे 3 बाइट से 4 वर्ण बनते हैं। सटीक लंबाई 4 × ceil(n / 3) है, इसलिए बड़े इनपुट में अतिरिक्त आकार लगभग 33.3% और छोटे इनपुट में उससे अधिक हो सकता है। लाइन रैपिंग या data: URL का उपसर्ग थोड़ा और आकार जोड़ता है।

दूसरी परत का कंप्रेशन नेटवर्क ट्रांसफ़र घटा सकता है, फिर भी एन्कोडिंग मेमोरी और CPU लेती है। बड़ी फ़ाइल के लिए सीधा बाइनरी ट्रांसफ़र आम तौर पर बेहतर है।

Base64 क्या नहीं करता

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

सरल नियम: Base64 टेक्स्ट की सीमा पार करने में मदद करता है, सुरक्षा की सीमा की रक्षा नहीं करता।

तकनीकी स्रोत