बेस 64 एनकोडिंग का उद्देश्य क्या है और इसका इस्तेमाल HTTP बेसिक ऑथेंटिकेशन में क्यों किया गया है?


129

मुझे Base64 एन्क्रिप्शन नहीं मिलता है।

यदि कोई बेस 64 स्ट्रिंग को डिक्रिप्ट कर सकता है, तो इसका क्या उद्देश्य है?

इसका इस्तेमाल HTTP बेसिक नॉर्थ के लिए क्यों किया जा रहा है?

यह किसी को बताने के लिए है जैसे मेरा पासवर्ड OLLEH में बदल गया है।

OLLEH देखने वाले लोगों को पता होगा कि मूल पासवर्ड HELLO था।




10
base64 एक एन्क्रिप्शन नहीं है, यह एक कूटबन्धन है
n611x007

जवाबों:


248

Base64 एन्क्रिप्शन नहीं है - यह एक एन्कोडिंग है। यह केवल मुद्रण योग्य (पाठ) वर्णों का उपयोग करके द्विआधारी डेटा का प्रतिनिधित्व करने का एक तरीका है।

HTTP बेसिक प्रमाणीकरण के लिए विकिपीडिया पृष्ठ से इस पैराग्राफ को देखें :

बेस 64 एल्गोरिथ्म के साथ उपयोगकर्ता नाम और पासवर्ड को एन्कोडिंग करते समय आम तौर पर नग्न आंखों से उन्हें अपठनीय बना दिया जाता है, वे आसानी से डिकोड किए जाते हैं क्योंकि वे एन्कोडेड होते हैं। सुरक्षा एन्कोडिंग कदम का इरादा नहीं है। बल्कि, एन्कोडिंग का इरादा गैर-HTTP- संगत वर्णों को एनकोड करना है जो उपयोगकर्ता नाम या पासवर्ड में HTTP- संगत हो सकते हैं।


4
इसके अलावा, ऐसा लगता है कि स्ट्रिंग से 'बाइनरी डेटा' प्राप्त करने के लिए प्रासंगिक वर्ण एन्कोडिंग, iso-8859-1 होना चाहिए । ( स्रोत )
मायोबिस

60

इसे आम तौर पर Base64 एन्कोडिंग कहा जाता है, एन्क्रिप्शन नहीं ! Base64 एन्कोडिंग के बारे में अच्छी बात यह है कि यह आपको उपलब्ध वर्णों के केवल एक सीमित, सामान्य-उप-समूह का उपयोग करके (बाइनरी) डेटा का प्रतिनिधित्व करने की अनुमति देता है, उदाहरण के लिए ASCII के रूप में केवल 1s और 0s का स्ट्रिंग लिखने की तुलना में अधिक कुशलता से।


6
+1, लेकिन 1s, 0s स्ट्रीम में डेटा संग्रहीत करने के लिए तुलना बहुत अतिरंजित है। हेक्स प्रारूप में डेटा को संग्रहीत करने के लिए इसकी तुलना करना बेहतर है। क्योंकि हेक्स केवल x2मूल धारा की तुलना में अधिक बाइट्स करेगा , और 1s, 0s - x8कई गुना अधिक बाइट्स बनाता है । (और Base64 x1.3मूल बाइट सरणी से अधिक डेटा बनाता है )। तो कभी-कभी यह बाइनरी स्ट्रीम को हेक्स स्ट्रिंग के रूप में एन्कोड करने के लिए स्वीकार्य है, बाइट राशि को दोगुना करने के लिए - उदाहरण के लिए बस डेटाबेस में पासवर्ड हैश को स्टोर करने के लिए।
अग्निस वासिलियास्कस

30

एन क्रिप्ट आयन को डिक्रिप्ट करने के लिए एक कुंजी (स्ट्रिंग या एल्गोरिथ्म) की आवश्यकता होती है; इसलिए "क्रिप्ट" (मूल: क्रिप्टोग्राफी )

एन कॉड आईएनजी किसी अन्य में एक चरित्र कोड को बदलता / बदलता है / बदलता है। इस स्थिति में, डेटा के सामान्य बाइट्स को अब आसानी से HTTP के माध्यम से दर्शाया और ले जाया जा सकता है।


5
एन्क्रिप्शन का अर्थ है "छिपे हुए को रेंडर करना" - कुंजी-आधारित क्रिप्टोग्राफी एक बहुत ही हालिया आविष्कार है। एनिलिर्शिंग एन्कोडिंग का एक रूप है जिसका उपयोग एन्क्रिप्शन के रूप में किया गया है (हालांकि 12 साल से अधिक उम्र के सैकड़ों लोगों के लिए नहीं)।

2
वर्नाक्यूलर में एन्क्रिप्शन का उपयोग एन्क्रिप्शन के हाल के मोड, विशेष रूप से कंप्यूटर एन्क्रिप्शन, जो की-बेस्ड (सार्वजनिक / निजी कुंजी) है, को संदर्भित करने के लिए किया जाता है। जबकि सच है, दिनांकित शब्द की शाब्दिक परिभाषा को इंगित करना अनावश्यक है; अन्यथा, आप आज उपयोग किए जाने वाले कई अंग्रेजी शब्दों की ऐतिहासिक परिभाषा पर बहस करेंगे। शब्दशः (और कभी-कभी बोलचाल की भाषा) वे शब्द हैं जो संदर्भ देते हैं और इस प्रकार परिभाषा देते हैं।
vol7ron

1
मुझे नहीं लगता कि आप असभ्य लग रहे थे; मैं आधुनिक संदर्भ में आपकी बात से सहमत हूं। शब्द और परिभाषाएं लगातार विकसित हो रही हैं। मुझे लगता है कि "एन्कोड" और "एनक्रिप्ट" निश्चित रूप से आधुनिक कंप्यूटिंग में दो अलग-अलग परिभाषाएं हैं और आपका जवाब मतभेदों को संक्षेप में प्रस्तुत करने का एक अच्छा प्रयास करता है।
दान बेखर

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

6
@DominicCerisano: नहीं, base64 एन्कोडिंग एन्क्रिप्शन के रूप में नहीं गिना जाता है, और मुझे आशा है कि आप इसे किसी भी चीज़ की सुरक्षा के लिए उपयोग नहीं कर रहे हैं।
Ry-

19

रोजमर्रा की भाषा में, एक "कोड" कुछ गुप्त है। विज्ञान और इंजीनियरिंग में, एक कोड केवल एक अनुबंध है, नियमों का एक सेट है, कैसे कुछ लिखना है।

वह कोड गुप्त हो सकता है। उस स्थिति में, इसे एन्क्रिप्शन कहा जाता है। लेकिन सामान्य तौर पर, एक कोड गुप्त नहीं है। जेनेटिक कोड लें। यह बस कहा गया है कि हमारे डीएनए चार अलग-अलग ठिकानों से बनाया गया है -  A, C, Gऔर Tऔर कहा कि तीन ठिकानों एक साथ मिलकर एक एमिनो एसिड के रूप में। वहाँ भी एक टेबल है जिसमें तीन अक्षर बने हैं जो अमीनो एसिड है।

इस कोड के बारे में कुछ भी गुप्त नहीं है।

इसी तरह, बेस 64 एक गुप्त कोड नहीं है। बल्कि, यह एक कोड है जो प्रति वर्ण छह बिट में डेटा संग्रहीत करने की अनुमति देता है (इस प्रकार 64 अलग-अलग इकाइयाँ हैं, अर्थात सिस्टम का "आधार" 64 है, जैसे हमारे दशमलव प्रणाली का आधार 10 है, क्योंकि 10 अलग-अलग संस्थाएँ हैं "अंक") कहा जाता है।



17

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

इंटरब्यूट्स पर बहुत सारे अलग-अलग होस्ट हैं और आप डेटा हानि / भ्रम को समाप्त किए बिना 7-बिट एएससीआईआई के अलावा किसी अन्य चीज के लिए वास्तव में समर्थन का अनुमान नहीं लगा सकते हैं।

उदाहरण के लिए, आईबीएम मेनफ्रेम ईबीसीडीआईसी नामक एक एन्कोडिंग का उपयोग करते हैं (जो कि विभिन्न स्वादों में बहुत आता है)। यह कोडपॉइंट ASCII- आधारित 'puters - ASCII में उपयोग किए जाने वाले कोड बिंदुओं से पूरी तरह से अलग है, अक्षर AZ 0x41 - 0x5A हैं; EBCDIC में A - Z अक्षर भी एक सन्निहित सीमा नहीं हैं: अक्षर AI 0xC1 - 0xC9 पर रहते हैं, अक्षर JR 0xD1 - 0xD9 पर रहते हैं और अक्षर SZ 0x2-2 - 0xE9 पर रहते हैं।


0

डिफ़ॉल्ट रूप से, हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) संदेशों में संदेश हेडर फ़ील्ड पैरामीटर ISO- 8859-1 वर्ण सेट के बाहर वर्ण नहीं ले जा सकता है।

यदि उपयोगकर्ता नाम और पासवर्ड में HTTP की तुलना में असंगत चारसेट हैं, तो उन टेक्स्ट को ले जाने में सक्षम नहीं होगा। इसे रोकने के लिए हम आधार के साथ उपयोगकर्ता नाम और पासवर्ड सांकेतिक शब्दों में बदलना सुनिश्चित करने के लिए कि हम HTTP संगत चार HTTP पर भेज रहे हैं। अधिक जानकारी के लिए यह Basic_access_authentication देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.