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




base64 encode (13)

मैंने लोगों को यहां "बेस 64 एन्कोडिंग" के बारे में बात करते हुए सुना है। इसका क्या उपयोग है?


जब हम वेब सेवाओं के माध्यम से बड़ी बाइनरी ऑब्जेक्ट्स (छवियों) को स्थानांतरित करते हैं तो मैं इसे व्यावहारिक अर्थ में उपयोग करता हूं। तो जब मैं एक पायथन लिपि का उपयोग कर सी # वेब सेवा का परीक्षण कर रहा हूं, तो बाइनरी ऑब्जेक्ट को थोड़ा जादू के साथ बनाया जा सकता है।

[पायथन में]

import base64
imageAsBytes = base64.b64decode( dataFromWS )

जब आपके पास कुछ बाइनरी डेटा होता है जिसे आप किसी नेटवर्क पर शिप करना चाहते हैं, तो आप आमतौर पर कच्चे प्रारूप में तार पर बिट्स और बाइट स्ट्रीम करके ऐसा नहीं करते हैं। क्यूं कर? क्योंकि स्ट्रीमिंग के लिए कुछ मीडिया बनाए जाते हैं। आप कभी नहीं जानते - कुछ प्रोटोकॉल आपके बाइनरी डेटा को कंट्रोल कैरेक्टर (मॉडेम की तरह) के रूप में समझ सकते हैं, या आपके बाइनरी डेटा को खराब कर दिया जा सकता है क्योंकि अंतर्निहित प्रोटोकॉल सोच सकता है कि आपने एक विशेष चरित्र संयोजन दर्ज किया है (जैसे कि एफ़टीपी लाइन का अनुवाद कैसे करता है अंत)।

तो इस के आसपास पाने के लिए, लोग बाइनरी डेटा को अक्षरों में एन्कोड करते हैं। बेस 64 इन प्रकार के एन्कोडिंग में से एक है।

64 क्यों?
क्योंकि आप आम तौर पर कई चरित्र सेटों में मौजूद 64 वर्णों पर भरोसा कर सकते हैं, और आप उचित रूप से भरोसा कर सकते हैं कि आपका डेटा तार के दूसरी तरफ बेकार हो जाएगा।


इसका उपयोग मनमाने ढंग से बाइनरी डेटा को ASCII पाठ में परिवर्तित करने के लिए किया जाता है।

उदाहरण के लिए, इस तरह से ई-मेल अनुलग्नक भेजे जाते हैं।


कुछ परिवहन प्रोटोकॉल केवल अल्फान्यूमेरिकल वर्णों को प्रसारित करने की अनुमति देते हैं। बस एक ऐसी स्थिति की कल्पना करें जहां विशेष वर्णों को ट्रिगर करने के लिए नियंत्रण वर्णों का उपयोग किया जाता है और / या केवल प्रति चरित्र सीमित बिट चौड़ाई का समर्थन करता है। Wikipedia किसी भी इनपुट को एन्कोडिंग में बदल देता है जो केवल अल्फान्यूमेरिक वर्णों, + , / और = को पैडिंग वर्ण के रूप में उपयोग करता है।


Base64

बेस 64 कई समान एन्कोडिंग योजनाओं के लिए एक सामान्य शब्द है जो इसे संख्यात्मक रूप से इलाज करके और बेस 64 प्रतिनिधित्व में अनुवाद करके बाइनरी डेटा को एन्कोड करता है। बेस 64 शब्द एक विशिष्ट एमआईएम सामग्री हस्तांतरण एन्कोडिंग से निकलता है।

बेस 64 एन्कोडिंग योजनाओं का आमतौर पर उपयोग किया जाता है जब बाइनरी डेटा को एन्कोड करने की आवश्यकता होती है जिसे टेक्स्ट डेटा के साथ सौदा करने के लिए डिज़ाइन किए गए मीडिया पर संग्रहीत और स्थानांतरित करने की आवश्यकता होती है। यह सुनिश्चित करना है कि डेटा परिवहन के दौरान संशोधन के बिना बरकरार रहे। बेस 64 आमतौर पर एमआईएम के माध्यम से ईमेल सहित कई अनुप्रयोगों में उपयोग किया जाता है, और एक्सएमएल में जटिल डेटा संग्रहीत करता है।


"बेस 64 एन्कोडिंग स्कीम आमतौर पर तब उपयोग की जाती हैं जब बाइनरी डेटा को एन्कोड करने की आवश्यकता होती है जिसे टेक्स्ट डेटा से संग्रहीत करने के लिए डिज़ाइन किए गए मीडिया पर संग्रहीत और स्थानांतरित करने की आवश्यकता होती है। यह सुनिश्चित करना है कि परिवहन के दौरान डेटा बिना संशोधन के बरकरार रहेगा "(विकी, 2017)

उदाहरण निम्न हो सकता है: आपके पास एक वेब सेवा है जो केवल ASCII वर्ण स्वीकार करती है। आप सहेजना चाहते हैं और फिर उपयोगकर्ता के डेटा को किसी अन्य स्थान (एपीआई) में स्थानांतरित करना चाहते हैं लेकिन प्राप्तकर्ता बिना छेड़छाड़ डेटा प्राप्त करना चाहता है। बेस 64 इसके लिए है। । । केवल नकारात्मक पक्ष यह है कि बेस 64 एन्कोडिंग को नियमित तारों की तुलना में लगभग 33% अधिक स्थान की आवश्यकता होगी।

एक और उदाहरण :: uenc = url encoded = aHR0cDovL2xvYy5tYWdlbnRvLmNvbS9hc2ljcy1tZW4tcy1nZWwta2F5YW5vLXhpaS5odG1s = http://loc.querytip.com/asics-men-s-gel-kayano-xii.html

जैसा कि आप देख सकते हैं कि हम URL में char "/" नहीं डाल सकते हैं अगर हम अंतिम बार गए यूआरएल को पैरामीटर के रूप में भेजना चाहते हैं क्योंकि हम "एमओडी रीराइट" के लिए विशेषता / मान नियम तोड़ देंगे - पैरामीटर प्राप्त करें।

एक पूर्ण उदाहरण होगा: " http://loc.querytip.com/checkout/cart/add/uenc/http://loc.magento.com/asics-men-s-gel-kayano-xii.html/product/93/ "


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


बेस -64 एन्कोडिंग बाइनरी डेटा लेने और इसे टेक्स्ट में बदलने का एक तरीका है ताकि यह ई-मेल और HTML फॉर्म डेटा जैसी चीज़ों में अधिक आसानी से प्रेषित हो।

Wikipedia


ब्रैड क्या कह रहा है उस पर थोड़ा सा विस्तार करने के लिए: ईमेल और यूज़नेट के लिए कई परिवहन तंत्र और डेटा को स्थानांतरित करने के अन्य तरीके "8 बिट साफ" नहीं हैं, जिसका अर्थ है कि मानक एसीआईआई चरित्र सेट के बाहर के वर्ण पारगमन में उलझाए जा सकते हैं - उदाहरण के लिए, 0x0D को कैरिज रिटर्न के रूप में देखा जा सकता है, और एक कैरिज रिटर्न और लाइन फीड में बदल गया। बेस 64 सभी बाइनरी वर्णों को कई मानक एसीआई अक्षरों और संख्याओं और विराम चिह्नों में मानचित्रित करता है ताकि वे इस तरह से उलझ जाएंगे।


बेस 64 का उपयोग मैं यहां वर्णन करने जा रहा हूं कुछ हद तक एक हैक है। तो अगर आपको हैक्स पसंद नहीं है, तो कृपया आगे बढ़ें।

जब मैंने पाया कि MySQL का utf8 4-बाइट यूनिकोड वर्णों का समर्थन नहीं करता है तो यह परेशानी में आया क्योंकि यह utf8 के 3-बाइट संस्करण का उपयोग करता है। तो मैंने MySQL के utf8 पर पूर्ण 4-बाइट यूनिकोड का समर्थन करने के लिए क्या किया? खैर, डेटाबेस में भंडारण करते समय बेस 64 एन्कोड तार और पुनर्प्राप्ति के दौरान बेस 64 डीकोड।

चूंकि बेस 64 एन्कोडिंग और डिकोडिंग बहुत तेज़ है, उपर्युक्त पूरी तरह से काम करता है।

आपके पास निम्नलिखित बिंदुओं का ध्यान रखना है:

  • बेस 64 एन्कोडिंग 33% अधिक भंडारण का उपयोग करता है

  • डेटाबेस में संग्रहीत स्ट्रिंग्स मानव पठनीय नहीं होंगे (आप इसे उस सुविधा के रूप में बेच सकते हैं जो डेटाबेस स्ट्रिंग एन्क्रिप्शन के मूल रूप का उपयोग करती है)।

आप उपरोक्त विधि का उपयोग किसी भी स्टोरेज इंजन के लिए कर सकते हैं जो यूनिकोड का समर्थन नहीं करता है।


कंप्यूटर के शुरुआती दिनों में, जब टेलीफोन लाइन इंटर-सिस्टम संचार विशेष रूप से विश्वसनीय नहीं था, तो डेटा अखंडता की पुष्टि करने की एक त्वरित और गंदे विधि का उपयोग किया गया: "बिट समानता"। इस विधि में, प्रत्येक बाइट संचरित डेटा के 7-बिट होंगे, और बाइट में 1 बिट्स की कुल संख्या को बल देने के लिए 8 वें 1 या 0 होगा।

इसलिए 0x01 0x81 के रूप में प्रसारित किया जाएगा; 0x02 0x82 होगा; 0x03 0x03 आदि रहेगा

इस प्रणाली को आगे बढ़ाने के लिए, जब ASCII चरित्र सेट को परिभाषित किया गया था, केवल 00-7F वर्णों को असाइन किया गया था। (आज भी, 80-एफएफ श्रेणी में सेट सभी पात्र गैर-मानक हैं)

दिन के कई राउटर ने समानता जांच और बाइट अनुवाद हार्डवेयर में रखा, जिससे उनसे जुड़े कंप्यूटरों को मजबूती से 7-बिट डेटा के साथ सौदा करने के लिए मजबूर किया गया। यह बल ईमेल अनुलग्नक (और अन्य सभी डेटा, यही कारण है कि HTTP और SMTP प्रोटोकॉल टेक्स्ट-आधारित हैं), केवल टेक्स्ट-टेक्स्ट प्रारूप में कनवर्ट करने के लिए।

कुछ राउटर 90 के दशक में बचे थे। मुझे गंभीरता से संदेह है कि उनमें से कोई भी आज उपयोग में है।


जो पहले से ही कहा जा चुका है, उसके अलावा, दो बहुत ही सामान्य उपयोग सूचीबद्ध नहीं हैं

हैश:

हैश एक तरफा कार्य हैं जो बाइट्स के ब्लॉक को एक निश्चित आकार के बाइट्स के दूसरे ब्लॉक में बदलते हैं जैसे कि 128 बिट या 256 बिट (एसएचए / एमडी 5)। परिणामी बाइट्स को बेस 64 में कनवर्ट करना हैश को प्रदर्शित करना अधिक आसान बनाता है, खासकर जब आप अखंडता के लिए चेकसम की तुलना कर रहे हैं। बेस 64 में हैश को अक्सर देखा जाता है कि कई लोग बेस 64 को हश के रूप में गलती करते हैं।

क्रिप्टोग्राफी:

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

ध्यान दें कि हालांकि क्रिप्टोग्राफी में बेस 64 का प्रयोग अक्सर सुरक्षा तंत्र नहीं होता है। कोई भी बेस 64 स्ट्रिंग को अपने मूल बाइट्स में वापस परिवर्तित कर सकता है, इसलिए इसे डेटा की सुरक्षा के साधन के रूप में उपयोग नहीं किया जाना चाहिए, केवल कच्चे बाइट्स को प्रदर्शित या स्टोर करने के प्रारूप के रूप में।

प्रमाण पत्र

पीईएम प्रारूप में x509 प्रमाणपत्र बेस 64 एन्कोडेड हैं। http://how2ssl.com/articles/working_with_pem_files/


Wikipedia

बेस 64 शब्द एक विशिष्ट एमआईएम सामग्री हस्तांतरण एन्कोडिंग को संदर्भित करता है। यह किसी भी समान एन्कोडिंग योजना के लिए सामान्य शब्द के रूप में भी प्रयोग किया जाता है जो इसे संख्यात्मक रूप से इलाज करके और बेस 64 प्रतिनिधित्व में अनुवाद करके बाइनरी डेटा को एन्कोड करता है। आधार की विशेष पसंद चरित्र सेट एन्कोडिंग के इतिहास के कारण है: कोई 64 अक्षरों का एक सेट चुन सकता है जो अधिकांश एन्कोडिंग के लिए सामान्य सबसेट का हिस्सा है, और प्रिंट करने योग्य भी है। यह संयोजन डेटा के माध्यम से पारगमन में संशोधित होने की संभावना को छोड़ देता है, जैसे ईमेल, जो पारंपरिक रूप से 8-बिट साफ नहीं थे।

बेस 64 विभिन्न संदर्भों में उपयोग किया जा सकता है:

  • ईवॉल्यूशन और थंडरबर्ड ई-मेल पासवर्ड को खराब करने के लिए बेस 64 का उपयोग करते हैं [1]
  • बेस 64 का उपयोग पाठ को प्रेषित और संग्रहीत करने के लिए किया जा सकता है जो अन्यथा डिलीमीटर टकराव का कारण बन सकता है
  • बेस 64 को क्रिप्टोग्राफिक कुंजी प्रबंधन के ऊपरी भाग के बिना रहस्यों को अस्पष्ट करने के लिए अक्सर एक त्वरित लेकिन असुरक्षित शॉर्टकट के रूप में उपयोग किया जाता है

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

  • बेस 64 का उपयोग एलडीआईएफ फाइलों में चरित्र तारों को एन्कोड करने के लिए किया जाता है
  • बेस 64 को कभी-कभी एक एक्सएमएल फ़ाइल में बाइनरी डेटा एम्बेड करने के लिए प्रयोग किया जाता है, जैसे सिंटैक्स का उपयोग ...... जैसे फ़ायरफ़ॉक्स के बुकमार्क्स.html।
  • बेस 64 का उपयोग सरकारी वित्तीय हस्ताक्षर मुद्रण उपकरणों (आमतौर पर, सीरियल या समांतर बंदरगाहों पर) के साथ संवाद करते समय भी किया जाता है ताकि हस्ताक्षर के लिए रसीद पात्रों को स्थानांतरित करते समय देरी को कम किया जा सके।
  • बेस 64 का उपयोग बाह्य फ़ाइलों के आधार पर बचने के लिए स्क्रिप्ट के भीतर छवियों जैसे बाइनरी फ़ाइलों को एन्कोड करने के लिए किया जाता है।
  • कच्चे छवि डेटा को पृष्ठभूमि-छवि जैसे सीएसएस प्रॉपर्टी में एम्बेड करने के लिए इस्तेमाल किया जा सकता है।




encode