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

बेस 64 एन्कोडिंग उस बाइनरी डेटा को 6-बिट वर्ण प्रतिनिधित्व में परिवर्तित करके बाइनरी डेटा को ASCII स्ट्रिंग प्रारूप में परिवर्तित करने की एक प्रक्रिया है। एन्कोडिंग की बेस 64 विधि का उपयोग तब किया जाता है जब बाइनरी डेटा, जैसे कि चित्र या वीडियो, उन सिस्टमों पर प्रसारित होते हैं जिन्हें डेटा को एक सादे-पाठ (ASCII) प्रारूप में प्रसारित करने के लिए डिज़ाइन किया गया है।

बेस 64 एन्कोडिंग का उपयोग क्यों किया जाता है?

बेस 64 एन्कोडिंग की आवश्यकता उन समस्याओं से आती है जो तब होती हैं जब मीडिया को प्रसारित किया जाता है कच्चा बाइनरी प्रारूप पाठ-आधारित प्रणालियों के लिए।

चूंकि टेक्स्ट-आधारित सिस्टम (जैसे ईमेल) बाइनरी डेटा की व्याख्या वर्णों की एक विस्तृत श्रृंखला के रूप में करें, जिसमें विशेष कमांड वर्ण, अधिकांश बाइनरी डेटा शामिल हैं मीडिया को स्थानांतरित करने के लिए प्रसारित किया जाता है, उन प्रणालियों द्वारा गलत व्याख्या की जाती है और संचरण में खो जाती है या दूषित हो जाती है प्रक्रिया।

स्क्रीन पर कंप्यूटर कोड देख रहा आदमी
वुथिचाई ल्यूमुआंग / आईईईएम / गेट्टी छवियां

इस तरह के बाइनरी डेटा को इस तरह से एन्कोड करने का एक तरीका जो इस तरह की ट्रांसमिशन समस्याओं से बचा जाता है, इसे बेस 64 एन्कोडेड प्रारूप में सादे ASCII टेक्स्ट के रूप में भेजना है। यह सादा पाठ के अलावा अन्य डेटा भेजने के लिए MIME मानक द्वारा नियोजित तकनीकों में से एक है।

कई प्रोग्रामिंग भाषाओं, जैसे कि PHP और जावास्क्रिप्ट में, बेस 64 एन्कोडिंग का उपयोग करके प्रेषित डेटा की व्याख्या करने के लिए बेस 64 एन्कोडिंग और डिकोडिंग फ़ंक्शन शामिल हैं।

बेस 64 एन्कोडिंग तर्क

बेस 64 एन्कोडिंग बाइनरी डेटा को 3 पूर्ण बाइट्स के 6-बिट सेगमेंट में तोड़ता है और एएससीआईआई मानक में प्रिंट करने योग्य वर्णों के रूप में उनका प्रतिनिधित्व करता है। यह अनिवार्य रूप से दो चरणों में करता है।

पहला कदम बाइनरी स्ट्रिंग को 6-बिट ब्लॉक में तोड़ना है। एन्कोडेड डेटा प्रिंट करने योग्य और मानवीय रूप से पठनीय है यह सुनिश्चित करने के लिए बेस 64 केवल 6 बिट्स (2^6 = 64 वर्णों के अनुरूप) का उपयोग करता है। ASCII में उपलब्ध किसी भी विशेष वर्ण का उपयोग नहीं किया जाता है।

64 वर्ण (इसलिए नाम बेस 64) 10 अंक, 26 लोअरकेस वर्ण, 26 अपरकेस वर्ण और साथ ही प्लस चिह्न (+) और फ़ॉरवर्ड स्लैश (/) हैं। एक 65वां वर्ण भी है जिसे a. के नाम से जाना जाता है तकती, जो समान चिन्ह (=) है। इस वर्ण का उपयोग तब किया जाता है जब बाइनरी डेटा के अंतिम खंड में पूर्ण 6 बिट नहीं होते हैं।

बेस 64 एन्कोडिंग उदाहरण

उदाहरण के लिए, तीन ASCII नंबर 155, 162 और 233 लें। ये तीन नंबर 100110111010001011101001 की बाइनरी स्ट्रीम बनाते हैं। एक छवि की तरह एक बाइनरी फ़ाइल में दसियों या सैकड़ों हजारों शून्य और एक के लिए चलने वाली बाइनरी स्ट्रीम होती है।

एक बेस 64 एन्कोडर बाइनरी स्ट्रीम को छह वर्णों के समूह में विभाजित करके शुरू होता है: 100110 111010 001011 101001। इनमें से प्रत्येक समूह 38, 58, 11 और 41 की संख्या में अनुवाद करता है।

एक छह-वर्ण वाली बाइनरी स्ट्रीम बाइनरी (या बेस -2) से दशमलव (बेस 10) वर्णों के बीच परिवर्तित होती है, जो बाइनरी अनुक्रम में 1 द्वारा दर्शाए गए प्रत्येक मान को उसके स्थितीय वर्ग के साथ चुकता करती है। दाएं से शुरू होकर बाएं चलते हुए, और शून्य से शुरू होकर, बाइनरी स्ट्रीम में मान 2^0, फिर 2^1, फिर 2^2, फिर 2^3, फिर 2^4, फिर 2^5 का प्रतिनिधित्व करते हैं।

इसे देखने का एक और तरीका यहां दिया गया है। बाएं से शुरू करते हुए, प्रत्येक स्थिति का मूल्य 1, 2, 4, 8, 16 और 32 है। यदि बाइनरी संख्या में स्लॉट में 1 है, तो आप उस मान को जोड़ते हैं; यदि स्लॉट में 0 है, तो आप नहीं करते हैं। बाइनरी स्ट्रिंग 100110 दशमलव संख्या 38: 0*2^01 + 1*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 = 0+2 में कनवर्ट करता है +4+0+0+32.

बेस 64 एन्कोडिंग इस बाइनरी स्ट्रिंग को लेता है और इसे 6-बिट मान 38, 58, 11 और 41 में तोड़ देता है।

अंत में, इन नंबरों को बेस 64 एन्कोडिंग तालिका का उपयोग करके ASCII वर्णों में परिवर्तित किया जाता है। इस उदाहरण के 6-बिट मान ASCII अनुक्रम में अनुवाद करते हैं एम6एलपी.

बेस 64 रूपांतरण तालिका का उपयोग करना:

  • 38 m. है
  • 58 6. है
  • 11 ल है
  • 41 p. है

यह दो-चरणीय प्रक्रिया एन्कोड की गई संपूर्ण बाइनरी स्ट्रिंग पर लागू होती है।

यह सुनिश्चित करने के लिए कि एन्कोडेड डेटा ठीक से मुद्रित किया जा सकता है और किसी भी मेल सर्वर की लाइन लंबाई सीमा से अधिक नहीं है, लाइन की लंबाई 76 वर्णों से कम रखने के लिए न्यूलाइन वर्ण डाले जाते हैं। न्यूलाइन वर्ण अन्य सभी डेटा की तरह एन्कोडेड हैं।

बेस 64 एन्कोडिंग का पूरा उद्देश्य, पैडिंग जोड़ने से लेकर 3-बाइट बाइनरी सेगमेंट को संरक्षित करने तक बेस 64 टेबल का उपयोग करके बाइनरी को टेक्स्ट में कनवर्ट करना, ट्रांसमिटेड बाइनरी की अखंडता को संरक्षित करना है जानकारी।

बेस 64 एन्कोडिंग तालिका

निम्न तालिका बेस 64 एन्कोडिंग में उपयोग किए गए सभी 64 वर्णों का अनुवाद करती है।

बेस 64 एन्कोडिंग तालिका
मूल्य चारो मूल्य चारो मूल्य चारो मूल्य चारो
0 16 क्यू 32 जी 48 वू
1 बी 17 आर 33 एच 49 एक्स
2 सी 18 एस 34 मैं 50 आप
3 डी 19 टी 35 जे 51 जेड
4 20 यू 36 52 0
5 एफ 21 वी 37 मैं 53 1
6 जी 22 वू 38 एम 54 2
7 एच 23 एक्स 39 एन 55 3
8 मैं 24 यू 40 हे 56 4
9 जे 25 जेड 41 पी 57 5
10 26 42 क्यू 58 6
11 ली 27 बी 43 आर 59 7
12 एम 28 सी 44 एस 60 8
13 एन 29 डी 45 टी 61 9
14 हे 30 46 तुम 62 +
15 पी 31 एफ 47 वी 63 /

एंडगेम को हल करना

एन्कोडिंग प्रक्रिया के अंत में, कोई समस्या हो सकती है। यदि बाइट्स में मूल डेटा का आकार तीन का गुणज है, तो सब कुछ ठीक काम करता है। यदि ऐसा नहीं है, तो खाली बाइट हो सकते हैं। उचित एन्कोडिंग के लिए, बाइनरी डेटा के बिल्कुल 3-बाइट्स की आवश्यकता होती है।

समाधान 3-बाइट समूह बनाने के लिए पर्याप्त बाइट्स को 0 के मान के साथ जोड़ना है। ऐसे दो मान जोड़े जाते हैं यदि डेटा को डेटा के एक अतिरिक्त बाइट की आवश्यकता होती है, तो एक को दो अतिरिक्त बाइट्स के लिए जोड़ा जाता है।

बेशक, इन कृत्रिम अनुगामी '0' को नीचे दी गई एन्कोडिंग तालिका का उपयोग करके एन्कोड नहीं किया जा सकता है। उन्हें 65वें चरित्र द्वारा दर्शाया जाना चाहिए। बेस 64 पैडिंग कैरेक्टर समान चिह्न (=) है और एन्कोडेड डेटा के अंत में रखा गया है।