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

विषयसूची:

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

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

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

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

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

Image
Image

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

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

बेस 64 एनकोडिंग लॉजिक

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

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

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

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

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

A Base64 एन्कोडर बाइनरी स्ट्रीम को छह वर्णों के समूहों में विभाजित करके शुरू होता है: 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: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 में कनवर्ट करता है +4+0+0+32.

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

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

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

  • 38 मी है
  • 58 है 6
  • 11 एल है
  • 41 पी है

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

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

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

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

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

बेस 64 एन्कोडिंग टेबल
मूल्य चार मूल्य चार मूल्य चार मूल्य चार
0 16 क्यू 32 जी 48 डब्ल्यू
1 बी 17 आर 33 49 x
2 सी 18 एस 34 मैं 50 y
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 पैडिंग कैरेक्टर समान चिह्न (=) है और एन्कोडेड डेटा के अंत में रखा गया है।

सिफारिश की: