कसरी Base64 एन्कोडिंग कार्य गर्दछ

यदि इन्टरनेट सूचना राजमार्ग हो भने, इमेलको लागि बाटो एक संकीर्ण कुवेत हो। केवल धेरै सानो गाडीहरू पास गर्न सक्दछ।

इ-मेलको ट्राभर्सल सिस्टम सादा ASCII पाठको लागि मात्र डिजाइन गरिएको छ। अन्य भाषा वा मनोनयन फाइलहरूमा पाठ पठाउन प्रयास गर्दै हुनुहुन्छ रमाईनको माध्यमबाट ट्रक लिनु जस्तो लाग्छ।

ठुलो ट्रक कसरी राइन मार्फत जान्छ?

त्यसोभए तपाइँ कसरी सानो भाँडामा एक ठूलो ट्रक पठाउनुहुन्छ? तपाईं यसलाई एक अन्त मा टुक्राहरु लिन, भाडा को माध्यम ले टुक्राहरु को परिवहन, र अर्को अन्त मा टुक्रा देखि ट्रक पुनर्निर्माण गर्नुपर्छ।

उही हुन्छ जब तपाइँ ईमेल मार्फत फाइल अनुलग्नक पठाउनुहुन्छ। एक प्रक्रियामा बाइनरी डेटा एन्कोडिङको रूपमा चिनिन्छ ASCII पाठमा, जुन कुनै पनि समस्या बिना ईमेलमा सार्न सकिन्छ। प्राप्तकर्ताको अन्त्यमा, डेटा डेकोड गरिएको छ र मूल फाइल पुनर्निर्माण गरिएको छ।

सादा ASCII पाठको रूपमा मनोनयन डेटा इन्कोडिङको एक तरिका Base64 हो। यो सादा पाठ भन्दा अन्य डेटा पठाउन MIME मानक द्वारा नियोजित प्रविधिको एक हो।

बचावको लागि बेस 64

Base64 एन्कोडिङ ले तीन बाइट्स लिन्छ, हरेक प्रत्येक आठ बिट्समा हुन्छन्, र ASCII मानकमा तिनीहरूलाई चार मुद्रण योग्य पात्रहरूको रूपमा प्रतिनिधित्व गर्दछ। यो कि अनिवार्य रूपमा दुई चरणहरू छन्।

पहिलो चरण तीन बाइटहरूलाई चार अंकको छ बिटहरू रूपान्तरण गर्न पहिलो चरण हो। ASCII मानकमा प्रत्येक वर्ण सात बिटहरू हुन्छन्। आधार 64 ले मुद्रण गर्न र मानवीय रूपमा पढ्न योग्य डेटा सुनिश्चित गर्नका लागि 6 बिटहरू (2 ^ 6 = 64 क्यारेक्टरसँग) मात्र प्रयोग गर्दछ। ASCII मा उपलब्ध विशेष वर्णहरू मध्ये कुनै पनि प्रयोग गरिएको छैन।

64 क्यारेक्टरहरू (यसैले बेस64 नाम) 10 अङ्कहरू, 26 लोकेके अक्षरहरू, 26 ठूला क्यारेक्टरहरू साथै '+' र '/' हुन्।

उदाहरणका लागि, तीन बाइट्स 155, 162 र 233, सम्बन्धित (र डरलाग्दो) बिट स्ट्रीम 100110111010001011101001 हो, जुन पछि 6-बिट मानहरू 38, 58, 11 र 41 सँग मिल्दछ।

यी नम्बरहरू आधार 64 एन्कोडिङ तालिका प्रयोग गरेर दोस्रो चरणमा ASCII क्यारेक्टरहरूमा परिवर्तित हुन्छन्। हाम्रो उदाहरणको 6-बिट मानहरू ASCII अनुक्रममा अनुवाद "m6Lp"।

यो दुई चरण प्रक्रिया एन्कोड गरिएको बाइट्स को सम्पूर्ण अनुक्रम मा लागू हुन्छ। एन्कोडेड डेटा राम्ररी मुद्रित गर्न सकिन्छ र कुनै पनि मेल सर्भरको लाइन लम्बाइ सीमा भन्दा बढि हुन सक्दैन, नयाँ लाइन क्यारेक्टरहरू तल 76 क्यारेक्टरहरू तल राख्न राख्न सम्मिलित छन्। नयाँ रेखा वर्णहरू सबै अन्य डेटा जस्तै एन्कोड गरिएको छ।

Endgame समाधान गर्दै

एन्कोडिङ प्रक्रियाको अन्त्यमा, हामी समस्यामा हिड्न सक्छौं। यदि बाइट्स मा मूल डेटा को आकार तीन को एकाधिक हो, सबै केहि राम्रो काम गर्दछ। यदि यो छैन भने, हामी एक वा दुई 8 बिट बाइट्सको साथ समाप्त हुन सक्छौं। उचित एन्कोडिङको लागि, हामी वास्तवमा तीन बाइट्स चाहिन्छ।

समाधानले 3 बाइट समूह सिर्जना गर्न 'बाइट' मानसँग पर्याप्त बाइटहरू जोड्न हो। यदि हाम्रो डेटा को एक अतिरिक्त बाइट छ भने दुई यस्तो मानहरू संलग्न हुन्छन्, एक दुई अतिरिक्त बाइट्स को लागी लाग्दछ।

निस्सन्देह, यी कृत्रिम पछाडि '0 को तल एन्कोडिङ तालिका प्रयोग गरेर एन्कोड गरिएको हुन सक्दैन। तिनीहरू 65 औं वर्णमा प्रतिनिधित्व गर्नुपर्दछ।

Base64 प्याडिङ वर्ण '=' हो। स्वाभाविक रूप देखि, यो एन्कोडेड डेटाको अन्त्यमा मात्र देखा पर्न सक्छ।

बेस 64 इन्कोडिङ तालिका

मूल्य Char मूल्य Char मूल्य Char मूल्य Char
0 A 16 Q 32 g 48 w
1 बी 17 आर 33 h 49 एक्स
2 सी 18 एस 34 i 50 y
3 डी 1 9 टी 35 j 51 z
4 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 जी 22 डब्ल्यू 38 m 54 2
7 एच 23 एक्स 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 पी 57 5
10 K 26 a 42 q 58 6
11 एल 27 बी 43 r 59 7
12 एम 28 c 44 s 60 8
13 N 29 45 t 61 9
14 O 30 46 u 62 +
15 पी 31 f 47 v 63 /