संबंधित नोट पर, आपके द्वारा बनाए गए मनमाने आधार रूपांतरण के लिए यहां एक आधार कनवर्टर है। का आनंद लें!
https://convert.zamicol.com/
पैडिंग कैरेक्टर क्या हैं?
पैडिंग वर्ण लंबाई की आवश्यकताओं को पूरा करने में मदद करते हैं और कोई अर्थ नहीं रखते हैं।
पैडिंग का दशमलव उदाहरण:
मनमानी आवश्यकता को देखते हुए सभी तार लंबाई में 8 वर्ण के होते हैं, संख्या 640 पूर्ववर्ती 0 के गद्दी पात्रों के रूप में इस आवश्यकता को पूरा कर सकती है क्योंकि वे कोई अर्थ नहीं रखते हैं, "00000640"।
बाइनरी एनकोडिंग
बाइट प्रतिमान: बाइट माप की वास्तविक मानक इकाई है और किसी भी एन्कोडिंग योजना को बाइट्स से संबंधित होना चाहिए।
Base256 इस प्रतिमान में बिल्कुल फिट बैठता है। एक बाइट बेस 256 में एक वर्ण के बराबर है।
Base16 , हेक्साडेसिमल या हेक्स, प्रत्येक वर्ण के लिए 4 बिट्स का उपयोग करता है। एक बाइट दो बेस 16 अक्षरों का प्रतिनिधित्व कर सकता है।
Base64 256 और बेस 16 के विपरीत बेस 64 बाइट प्रतिमान (और न ही बेस 32) में समान रूप से फिट नहीं होता है। सभी बेस 64 अक्षरों को एक पूर्ण बाइट से 6 बिट्स, 2 बिट्स में दर्शाया जा सकता है।
हम एक अंश के रूप में बाइट प्रतिमान बनाम base64 एन्कोडिंग का प्रतिनिधित्व कर सकते हैं: बाइट प्रति 8 बिट्स पर प्रति वर्ण 6 बिट्स । इस अंश को घटाकर 4 वर्णों पर 3 बाइट्स है।
यह अनुपात, प्रत्येक 4 बेस 64 अक्षरों के लिए 3 बाइट्स, वह नियम है जिसे हम बेस 64 को एन्कोडिंग करते समय फॉलो करना चाहते हैं। Base64 एन्कोडिंग केवल 3 बाइट बंडलों के साथ मापने का भी वादा कर सकती है, बेस 16 और बेस 25 के विपरीत जहां हर बाइट अपने आप खड़ी हो सकती है।
तो क्यों पैडिंग को प्रोत्साहित किया जाता है भले ही एन्कोडिंग पैडिंग पात्रों के बिना ठीक काम कर सके?
यदि किसी स्ट्रीम की लंबाई अज्ञात है या यदि डेटा स्ट्रीम समाप्त होने के समय यह जानना उपयोगी हो सकता है, तो पैडिंग का उपयोग करें। गद्दी वर्ण स्पष्ट रूप से संवाद करते हैं कि उन अतिरिक्त स्पॉट खाली होने चाहिए और किसी भी अस्पष्टता को नियंत्रित करते हैं। यहां तक कि अगर लंबाई पैडिंग के साथ अज्ञात है, तो आपको पता चल जाएगा कि आपका डेटा स्ट्रीम कहां समाप्त होता है।
एक काउंटर उदाहरण के रूप में, JOSE जैसे कुछ मानक पैडिंग कैरेक्टर की अनुमति नहीं देते हैं। इस मामले में, यदि कोई चीज़ गायब है, तो एक क्रिप्टोग्राफ़िक हस्ताक्षर काम नहीं करेगा या अन्य गैर बेस 64 अक्षर गायब हो जाएंगे (जैसे "।")। हालाँकि लंबाई के बारे में धारणा नहीं बनाई गई है, इसलिए पैडिंग की ज़रूरत नहीं है क्योंकि अगर कुछ गड़बड़ है तो यह आसानी से काम नहीं करेगा।
और यह वही है जो base64 RFC कहता है,
कुछ परिस्थितियों में, आधार-एन्कोडेड डेटा में पैडिंग ("=") के उपयोग की आवश्यकता या उपयोग नहीं किया जाता है। सामान्य स्थिति में, जब ट्रांसपोर्ट किए गए डेटा के आकार के बारे में धारणा नहीं बनाई जा सकती है, तो सही डिकोड किए गए डेटा को पैडिंग करने की आवश्यकता होती है।
[...]
बेस 64 में पैडिंग स्टेप […] यदि अनुचित तरीके से लागू किया गया है, तो एन्कोडेड डेटा के गैर-महत्वपूर्ण परिवर्तनों को जन्म देता है। उदाहरण के लिए, यदि आधार 64 एन्कोडिंग के लिए इनपुट केवल एक ऑक्टेट है, तो पहले प्रतीक के सभी छह बिट्स का उपयोग किया जाता है, लेकिन अगले प्रतीक के केवल पहले दो बिट्स का उपयोग किया जाता है। इन पैड बिट्स को एन्कोडर के अनुरूप शून्य पर सेट किया जाना चाहिए, जिसका वर्णन नीचे पेडिंग पर दिया गया है। यदि यह संपत्ति नहीं है, तो आधार-एन्कोडेड डेटा का कोई कैनोनिकल प्रतिनिधित्व नहीं है, और कई आधार-एन्कोडेड स्ट्रिंग्स को एक ही बाइनरी डेटा को डिकोड किया जा सकता है। यदि यह संपत्ति (और इस दस्तावेज़ में चर्चा की गई अन्य) रखती है, तो एक कैनोनिकल एन्कोडिंग की गारंटी है।
पैडिंग हमें खोए हुए बिट्स के वादे के साथ बेस 64 एनकोडिंग को डिकोड करने की अनुमति देता है। पैडिंग के बिना तीन बाइट बंडलों में मापने की स्पष्ट पावती नहीं है। पैडिंग के बिना आप मूल जानकारी के सटीक पुनरुत्पादन की सटीक गारंटी देने में सक्षम नहीं हो सकते हैं, आमतौर पर आपके स्टैक में कहीं और से टीसीपी, चेकसम या अन्य तरीकों की तरह।
उदाहरण
यहाँ RFC 4648 ( http://tools.ietf.org/html/rfc4648#s-/ ) का उदाहरण दिया गया है।
"BASE64" फ़ंक्शन के अंदर प्रत्येक वर्ण एक बाइट (base256) का उपयोग करता है। हम फिर बेस 64 में अनुवाद करते हैं।
BASE64("") = "" (No bytes used. 0%3=0.)
BASE64("f") = "Zg==" (One byte used. 1%3=1.)
BASE64("fo") = "Zm8=" (Two bytes. 2%3=2.)
BASE64("foo") = "Zm9v" (Three bytes. 3%3=0.)
BASE64("foob") = "Zm9vYg==" (Four bytes. 4%3=1.)
BASE64("fooba") = "Zm9vYmE=" (Five bytes. 5%3=2.)
BASE64("foobar") = "Zm9vYmFy" (Six bytes. 6%3=0.)
यहाँ एक एनकोडर है जिसे आप साथ में खेल सकते हैं: http://www.motobit.com/util/base64-decoder-encoder.asp