हाशिंग और एन्क्रिप्शन एल्गोरिदम के बीच मौलिक अंतर


509

मुझे हैश और एन्क्रिप्शन एल्गोरिदम के बीच बहुत भ्रम है और मैं इसके बारे में कुछ और विशेषज्ञ सलाह सुनना चाहूंगा:

  1. हैश बनाम एनक्रिप्ट का उपयोग कब करें

  2. एक हैश या एन्क्रिप्शन एल्गोरिथ्म (एक सैद्धांतिक / गणितीय स्तर से) को अलग बनाता है यानी क्या हैश को अपरिवर्तनीय बनाता है (इंद्रधनुष के पेड़ की सहायता के बिना)

यहां कुछ ऐसे ही एसओ प्रश्न दिए गए हैं, जिनकी मैं जितनी तलाश कर रहा था, उतनी विस्तार से नहीं कर पाया:

Obfuscation, Hashing और एन्क्रिप्शन के बीच अंतर क्या है?
एन्क्रिप्शन और हैशिंग के बीच अंतर


28
मैं इस बात का पूर्वाभास कर सकता हूं कि लोगों को जब वे शर्तों को भ्रमित करने के लिए संदर्भित करते हैं। :)
एडम पेन्न्टर

18
हैशिंग एक तरीका है (वापस नहीं किया जा सकता), एन्क्रिप्शन दो-तरफ़ा (डिक्रिप्ट किया जा सकता है)
22:12

बड़ी संरचनाओं और वस्तुओं, जैसे फ़ाइलों को अनुक्रमित करने के लिए हैशिंग भी उपयोगी हैं। हैश टेबल देखें ।
HABO

22
हाशिंग एक मांस की चक्की की तरह है। आप एक गाय को हैमबर्गर में बदल सकते हैं, लेकिन रिवर्स नहीं।
नील मैकगिगन

मैंने देखा कि मेरा प्रश्न संपादित किया गया था। मैं हमेशा दोनों के बीच शीर्ष स्तर के अंतरों को जानता था लेकिन निम्न स्तर / गणितीय अंतरों के बारे में अधिक उत्सुक था। :) किसी भी तरह से, बहुत अच्छी सामग्री एसओ के लिए! बहुत धन्यवाद!
केनी कैसन

जवाबों:


738

ठीक है, आप इसे विकिपीडिया में देख सकते हैं ... लेकिन जब से आप एक स्पष्टीकरण चाहते हैं, मैं यहाँ अपना सर्वश्रेष्ठ प्रदर्शन करूँगा:

हैश फंक्शंस

वे एक मनमाना लंबाई इनपुट और (आमतौर पर) निश्चित लंबाई (या छोटी लंबाई) आउटपुट के बीच एक मानचित्रण प्रदान करते हैं। यह एक साधारण crc32, एमडी 5 या SHA1 / 2/256/512 जैसे पूर्ण विकसित क्रिप्टोग्राफिक हैश फ़ंक्शन से कुछ भी हो सकता है। मुद्दा यह है कि वहाँ एक तरह से मानचित्रण चल रहा है। यह हमेशा एक बहुत है: 1 मानचित्रण (मतलब हमेशा टकराव होगा) चूंकि प्रत्येक फ़ंक्शन इनपुट करने में सक्षम होने की तुलना में एक छोटा आउटपुट पैदा करता है (यदि आप एमडी 5 में हर संभव 1mb फ़ाइल फ़ीड करते हैं, तो आपको एक टन टकराव मिलेगा)।

इसका कारण यह है कि वे व्यावहारिक रूप से कठिन (या व्यावहारिकता में असंभव) हैं क्योंकि वे आंतरिक रूप से कैसे काम करते हैं। अधिकांश क्रिप्टोग्राफ़िक हैश आउटपुट के उत्पादन के लिए इनपुट सेट पर कई बार कार्य करता है। इसलिए यदि हम इनपुट की प्रत्येक निश्चित लंबाई के टुकड़े (जो एल्गोरिथ्म पर निर्भर है) को देखते हैं, हैश फ़ंक्शन वर्तमान स्थिति को कॉल करेगा। फिर यह राज्य पर पुनरावृत्ति करेगा और इसे एक नए में बदल देगा और उस फीडबैक को स्वयं के रूप में उपयोग कर सकता है (MD5 प्रत्येक 512bit डेटा के लिए 64 बार करता है)। फिर यह किसी भी तरह परिणामी अवस्थाओं को जोड़कर इन सभी पुनरावृत्तियों को एक साथ परिणामी हैश बनाता है।

अब, यदि आप हैश को डीकोड करना चाहते हैं, तो आपको पहले यह पता लगाना होगा कि दिए गए हैश को इसकी पुनरावृत्त अवस्थाओं में कैसे विभाजित किया जाए (1 इनपुट के आकार की तुलना में छोटे डेटा के आकार की संभावना, बड़े इनपुट के लिए कई)। फिर आपको प्रत्येक राज्य के लिए पुनरावृत्ति को उलटने की आवश्यकता होगी। अब, यह समझाने के लिए कि यह बहुत कठिन है, कल्पना करने की कोशिश करें aऔर bनिम्नलिखित सूत्र से कटौती करने की कोशिश करें 10 = a + b:। के 10 सकारात्मक संयोजन हैं aऔर bयह काम कर सकते हैं। अब उस पर एक बार लूप करें:tmp = a + b; a = b; b = tmp। 64 पुनरावृत्तियों के लिए, आपके पास प्रयास करने के लिए 10 ^ 64 से अधिक संभावनाएँ होंगी। और यह सिर्फ एक साधारण जोड़ है जहां कुछ राज्य को पुनरावृत्ति से संरक्षित किया जाता है। वास्तविक हैश फ़ंक्शंस 1 से अधिक ऑपरेशन करते हैं (एमडी 5 4 राज्य चर पर लगभग 15 ऑपरेशन करता है)। और चूंकि अगली पुनरावृत्ति पूर्व की स्थिति पर निर्भर करती है और पिछली स्थिति को वर्तमान स्थिति बनाने में नष्ट हो जाती है, यह इनपुट स्थिति को निर्धारित करने के लिए सभी असंभव है, जो एक दिए गए आउटपुट राज्य (प्रत्येक पुनरावृत्ति के लिए कोई कम नहीं) का नेतृत्व करता है। बड़ी संख्या में शामिल होने की संभावनाओं के साथ, और एमडी 5 को भी डीकोड करने से संसाधनों के पास अनंत (लेकिन अनंत नहीं) राशि प्राप्त होगी। इतने संसाधन कि यह '

एन्क्रिप्शन कार्य

वे एक मनमाना लंबाई इनपुट और आउटपुट के बीच 1: 1 मैपिंग प्रदान करते हैं। और वे हमेशा प्रतिवर्ती हैं। ध्यान देने योग्य बात यह है कि यह किसी विधि का उपयोग करके प्रतिवर्ती है। और यह हमेशा दी गई कुंजी के लिए 1: 1 है। अब, कई इनपुट हैं: प्रमुख जोड़े जो समान आउटपुट उत्पन्न कर सकते हैं (वास्तव में एन्क्रिप्शन फ़ंक्शन के आधार पर, आमतौर पर वहां होते हैं)। अच्छा एन्क्रिप्टेड डेटा यादृच्छिक शोर से अप्रभेद्य है। यह एक अच्छे हैश आउटपुट से अलग है जो हमेशा एक सुसंगत प्रारूप का होता है।

बक्सों का इस्तेमाल करें

जब आप किसी मान की तुलना करना चाहते हैं, तो हैश फ़ंक्शन का उपयोग करें, लेकिन सादे प्रतिनिधित्व को संग्रहीत नहीं कर सकता (किसी भी कारण से)। पासवर्ड को इस उपयोग के मामले में बहुत अच्छी तरह से फिट होना चाहिए क्योंकि आप उन्हें सुरक्षा कारणों से सादे-पाठ को संग्रहीत नहीं करना चाहते (और नहीं करना चाहिए)। लेकिन क्या होगा अगर आप पायरेटेड म्यूजिक फाइल्स के लिए फाइलसिस्टम जांचना चाहते हैं? यह 3 एमबी प्रति संगीत फ़ाइल संग्रहीत करने के लिए अव्यावहारिक होगा। इसलिए इसके बजाय, फ़ाइल का हैश लें, और स्टोर करें (md5 3mb के बजाय 16 बाइट्स स्टोर करेगा)। इस तरह, आप बस प्रत्येक फ़ाइल को हैश करते हैं और हैश के संग्रहीत डेटाबेस से तुलना करते हैं (यह री-एन्कोडिंग, फ़ाइल हेडर बदलने आदि के कारण अभ्यास में भी काम नहीं करता है, लेकिन यह एक उदाहरण उपयोग-मामला है)।

जब आप इनपुट डेटा की वैधता की जाँच कर रहे हों तो हैश फ़ंक्शन का उपयोग करें। यही उनके लिए डिज़ाइन किया गया है। यदि आपके पास इनपुट के 2 टुकड़े हैं, और यह देखने के लिए जांचना चाहते हैं कि क्या वे समान हैं, तो हैश फ़ंक्शन के माध्यम से दोनों चलाएं। टक्कर की संभावना छोटे इनपुट आकार (एक अच्छा हैश फ़ंक्शन मानकर) के लिए खगोलीय रूप से कम है। इसलिए यह पासवर्ड के लिए अनुशंसित है। 32 अक्षरों तक के पासवर्ड के लिए, md5 में 4 गुना आउटपुट स्पेस है। SHA1 में 6 गुना आउटपुट स्पेस (लगभग) है। SHA512 में लगभग 16 गुना आउटपुट स्पेस है। आपको वास्तव में परवाह नहीं है कि पासवर्ड क्या था , आप परवाह करते हैं कि यह वही है जो संग्रहीत किया गया था। इसलिए आपको पासवर्ड के लिए हैश का उपयोग करना चाहिए।

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

डेटा पर हस्ताक्षर करने के लिए हैश फ़ंक्शन भी महान हैं। उदाहरण के लिए, यदि आप HMAC का उपयोग कर रहे हैं, तो आप एक ज्ञात लेकिन प्रेषित मूल्य (एक गुप्त मूल्य) के साथ समाप्‍त डेटा का एक हैश लेकर डेटा के एक टुकड़े पर हस्ताक्षर करते हैं। तो, आप सादा-पाठ और HMAC हैश भेजें। फिर, रिसीवर केवल प्रस्तुत किए गए डेटा को ज्ञात मूल्य के साथ धोता है और यह देखने के लिए जांचता है कि क्या यह प्रेषित एचएमएसी से मेल खाता है। यदि यह समान है, तो आप जानते हैं कि यह एक पार्टी द्वारा गुप्त मूल्य के बिना छेड़छाड़ नहीं की गई थी। यह आमतौर पर HTTP फ्रेमवर्क द्वारा सुरक्षित कुकी सिस्टम में उपयोग किया जाता है, साथ ही साथ HTTP पर डेटा के संदेश संचरण में जहां आप डेटा में अखंडता का कुछ आश्वासन चाहते हैं।

पासवर्ड के लिए हैश पर एक नोट:

क्रिप्टोग्राफ़िक हैश फ़ंक्शंस की एक प्रमुख विशेषता यह है कि उन्हें बनाने के लिए बहुत तेज़ होना चाहिए, और रिवर्स करने के लिए बहुत मुश्किल / धीमा (इतना है कि यह व्यावहारिक रूप से असंभव है)। इससे पासवर्ड की समस्या हो जाती है। यदि आप स्टोर करते हैं sha512(password), तो आप इंद्रधनुष तालिकाओं या जानवर बल के हमलों के खिलाफ रक्षा करने के लिए एक चीज़ नहीं कर रहे हैं। याद रखें, हैश फ़ंक्शन गति के लिए डिज़ाइन किया गया था। तो यह एक हमलावर के लिए केवल हैश फ़ंक्शन के माध्यम से एक शब्दकोश चलाने और प्रत्येक परिणाम का परीक्षण करने के लिए तुच्छ है।

नमक जोड़ने से मामलों में मदद मिलती है क्योंकि यह हैश में कुछ अज्ञात डेटा जोड़ता है। इसलिए जो कुछ भी मेल खाता है md5(foo), उसे खोजने के बजाय , उन्हें कुछ ऐसा खोजने की आवश्यकता होती है, जब ज्ञात नमक में मिलाया जाता है md5(foo.salt)(जो करने के लिए बहुत कठिन है)। लेकिन यह अभी भी गति की समस्या को हल नहीं करता है क्योंकि अगर वे नमक जानते हैं तो यह केवल शब्दकोश चलाने की बात है।

तो, इससे निपटने के तरीके हैं। एक लोकप्रिय विधि को कुंजी को मजबूत करना (या कुंजी खींचना) कहा जाता है । मूल रूप से, आप हैश पर कई बार पुनरावृत्त होते हैं (आमतौर पर हजारों)। यह दो काम करता है। सबसे पहले, यह हैशिंग एल्गोरिथ्म के रनटाइम को काफी धीमा कर देता है। दूसरा, अगर सही लागू किया जाता है (प्रत्येक पुनरावृत्ति पर इनपुट और नमक वापस पारित करना) वास्तव में आउटपुट के लिए एन्ट्रॉपी (उपलब्ध स्थान) को बढ़ाता है, जिससे टकराव की संभावना कम हो जाती है। एक तुच्छ कार्यान्वयन है:

var hash = password + salt;
for (var i = 0; i < 5000; i++) {
    hash = sha512(hash + password + salt);
}

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

नीचे की रेखा, hash(password)पर्याप्त अच्छी नहीं है। hash(password + salt)बेहतर है, लेकिन अभी भी पर्याप्त नहीं है ... अपने पासवर्ड हैश का उत्पादन करने के लिए एक विस्तारित हैश तंत्र का उपयोग करें ...

तुच्छ खींच पर एक और नोट

किसी भी परिस्थिति में एक हैश के उत्पादन को सीधे हैश फ़ंक्शन में वापस न करें :

hash = sha512(password + salt); 
for (i = 0; i < 1000; i++) {
    hash = sha512(hash); // <-- Do NOT do this!
}

इसका कारण टक्करों के साथ करना है। याद रखें कि सभी हैश फ़ंक्शंस में टक्कर होती है क्योंकि संभावित आउटपुट स्पेस (संभावित आउटपुट की संख्या) इनपुट स्पेस से छोटा होता है। क्यों देखना है, आइए देखें कि क्या होता है। इसे प्रस्तुत करने के लिए, मान लें कि वहाँ से टकराव की 0.001% संभावना है sha1()(यह वास्तविकता में बहुत कम है, लेकिन प्रदर्शन उद्देश्यों के लिए)।

hash1 = sha1(password + salt);

अब, hash10.001% की टक्कर की संभावना है। लेकिन जब हम अगला करते हैं hash2 = sha1(hash1);, तो स्वचालित रूप से सभी टकराव की hash1टक्कर बन जाते हैंhash2 । तो अब, हमारे पास हैश की दर 0.001% है, और दूसरा sha1()कॉल उसी को जोड़ता है। तो अब, hash20.002% के टकराने की संभावना है। कि दो बार के रूप में कई संभावना है! प्रत्येक पुनरावृत्ति 0.001%परिणाम को टकराने का एक और मौका जोड़ देगा । तो, 1000 पुनरावृत्तियों के साथ, टक्कर का मौका एक मामूली 0.001% से 1% तक उछल गया। अब, गिरावट रैखिक है, और वास्तविक संभावनाएं बहुत छोटी हैं, लेकिन प्रभाव समान है (एकल टकराव की संभावना का एक अनुमान md5लगभग 1 / (2 128 ) या 1 / (3x10 38) है)। जबकि यह छोटा लगता है, जन्मदिन के हमले के लिए धन्यवाद यह वास्तव में उतना छोटा नहीं है जितना लगता है)।

इसके बजाय, हर बार नमक और पासवर्ड को फिर से जोड़कर, आप डेटा को हैश फ़ंक्शन में वापस ला रहे हैं। इसलिए किसी भी विशेष दौर की कोई भी टक्कर अब अगले दौर की टक्कर नहीं है। इसलिए:

hash = sha512(password + salt);
for (i = 0; i < 1000; i++) {
    hash = sha512(hash + password + salt);
}

देशी sha512समारोह के रूप में टकराव का एक ही मौका है । जो आप चाहते हैं। इसकी जगह इस्तेमाल करें।


30
लिंक्डइन पर प्रोग्रामर्स को बहुत बुरा लगा, इससे पहले कि वे अनसाल्टेड SHA1 हैश के रूप में पासवर्ड संग्रहीत करते हैं, इसे नहीं पढ़ा ... money.cnn.com/2012/06/06/technology/linkedin-password-hack/…
एरिक जे।

2
@ स्पेसर: यह हैशिंग पर भी थोड़ा जोर देता है। यह विशेष रूप से पासवर्ड हैशिंग पर विस्तार से जाता है ...
ircmaxell

1
मुझे समझ में नहीं आता है कि अगर एक ही आउटपुट में एकाधिक कुंजी हो सकती हैं तो यह 1 से 1 मैपिंग कैसे हो सकती है। DES के लिए, कुंजी की लंबाई 56 बिट्स है और ब्लॉक आकार 64 बिट्स हैं। इसलिए, 256 अलग-अलग कुंजियाँ नहीं हैं जो एक ही आउटपुट ब्लॉक में मैप कर सकती हैं?
mrQWERTY

1
@ Renren29 हाँ। तुम सही हो। व्यवहार में, पूरे सिफर न तो विशेषण और न ही इंजेक्शन। हालांकि, किसी दिए गए कुंजी के लिए, यह विशेषण है (प्रत्येक सादे पाठ में ठीक एक सिफरटेक्स्ट है) लेकिन जरूरी नहीं कि इंजेक्शन (प्रत्येक संभावित सिफरटेक्स्ट में मैपिंग बैक नहीं है)। इसलिए मैंने कहा कि यह किसी दिए गए कुंजी के लिए हमेशा 1: 1 है । यदि कई कुंजियाँ नहीं थीं जो एक ही आउटपुट ब्लॉक में आउटपुट कर सकती थीं, तो सिफर उपयोगी नहीं होगा क्योंकि सिफरटेक्स्ट आपको कुंजी के बारे में कुछ बताएगा (इसे जाने बिना)।
45maxell

7
बहुत बढ़िया जवाब। मेरा एकमात्र निपिक यह है कि तुच्छ खिंचाव का क्षरण रैखिक नहीं हो सकता है या यह अंततः 100% होगा। मुझे लगता है कि आपके उदाहरण में .001% दूसरा चरण होना चाहिए ।001 + (1 - 0.001) * .001, या 0.001999।
एलेक्सडेव

160

एक हैश फ़ंक्शन को रोटी के एक पाव रोटी के समान माना जा सकता है। आप इनपुट (आटा, पानी, खमीर, आदि) के साथ शुरू करते हैं ... और हैश फ़ंक्शन (मिक्सिंग + बेकिंग) को लागू करने के बाद, आप एक आउटपुट के साथ समाप्त होते हैं: रोटी की एक पाव रोटी।

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

इनपुट के कई अलग-अलग प्रकार सैद्धांतिक रूप से समान रोटियां उत्पन्न करेंगे (जैसे 2 कप पानी और 1 टीबीपी यीस्ट बिलकुल एक पाव रोटी 2.1 कप पानी और खमीर 0.9tsbp के समान होता है), लेकिन उन रोटियों में से एक, आप बता सकते हैं। वास्तव में क्या इनपुट के कॉम्बो ने इसका उत्पादन किया।

दूसरी ओर, एन्क्रिप्शन, एक सुरक्षित जमा बॉक्स के रूप में देखा जा सकता है। जो कुछ भी आप वहां डालते हैं वह वापस बाहर आता है, जब तक आपके पास वह चाबी होती है जिसके साथ वह पहली बार बंद था। यह एक सममितीय ऑपरेशन है। एक कुंजी और कुछ इनपुट को देखते हुए, आपको एक निश्चित आउटपुट मिलता है। उस आउटपुट और उसी कुंजी को देखते हुए, आपको मूल इनपुट वापस मिल जाएगा। यह 1: 1 मैपिंग है।


2
सिवाय इसके कि आप आसानी से यह नहीं दिखा सकते हैं कि एक विशेष हैमबर्गर पूरी तरह से एक विशेष गाय से आया है, जो एक हैश की एक मौलिक संपत्ति है, इसलिए यह एक अजीब विचार है लेकिन एक भयानक उपमा है।
user467257

1
@caf lol वास्तव में और उस पर एक क्लासिक। हालांकि, गाय शायद ही कभी इसे बाजार में लाती है, यह "बुल" है जो ;-) गाय: दूध। बैल: मांस।
फंक फोर्टी निनेर

1
इसके पीछे की कहानी सुपर स्वादिष्ट लगती है।
सिटिलाज

44

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

हैश कुछ इनपुट लेते हैं और इसे कुछ बिट्स में बदल देते हैं (आमतौर पर एक संख्या के रूप में सोचा जाता है, जैसे कि 32 बिट पूर्णांक, 64 बिट पूर्णांक, आदि)। एक ही इनपुट हमेशा एक ही हैश का उत्पादन करेगा, लेकिन आप PRINCIPALLY प्रक्रिया में जानकारी खो देते हैं, इसलिए आप मूल इनपुट को मज़बूती से पुन: पेश नहीं कर सकते हैं (हालांकि उस पर कुछ चेतावनी हैं)।

एन्क्रिप्शन मुख्य रूप से एन्क्रिप्शन फ़ंक्शन में रखी गई सभी सूचनाओं को सुरक्षित रखता है, बस किसी भी व्यक्ति के लिए एक विशिष्ट कुंजी रखने के बिना मूल इनपुट पर वापस रिवर्स करना कठिन (आदर्श रूप से असंभव) बनाता है।

हाशिंग का सरल उदाहरण

यहाँ समझने में मदद करने के लिए एक तुच्छ उदाहरण है कि हैशिंग (सामान्य स्थिति में) मूल इनपुट वापस क्यों नहीं कर सकता है। कहो मैं 1-बिट हैश बना रहा हूं। मेरा हैश फ़ंक्शन इनपुट के रूप में थोड़ा स्ट्रिंग लेता है और हैश को 1 पर सेट करता है यदि इनपुट स्ट्रिंग में समान संख्या में बिट सेट हैं, तो 0 और अगर कोई विषम संख्या है।

उदाहरण:

Input    Hash
0010     0
0011     1
0110     1
1000     0

ध्यान दें कि कई इनपुट मान हैं जिनका परिणाम 0 के हैश में है, और कई का परिणाम हैश का 1 है। यदि आपको हैश 0 है, तो आप यह नहीं जान सकते कि मूल इनपुट क्या था।

वैसे, यह 1-बिट हैश बिल्कुल विपरीत नहीं है ... समानता बिट पर एक नज़र है ।

एन्क्रिप्शन का सरल उदाहरण

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

Input   Encrypted
CAT     DBU
ZOO     APP

साधारण हैश उदाहरण की तरह, इस प्रकार के एन्क्रिप्शन का उपयोग ऐतिहासिक रूप से किया गया है


यह ध्यान देने योग्य है कि "एन्क्रिप्शन" बोलचाल की भाषा में मजबूत एन्क्रिप्शन को संदर्भित करता है और ऊपर के उदाहरण में सीज़र सिफर जैसे कमजोर एन्क्रिप्शन के साथ भ्रमित नहीं होना चाहिए।
फैक्स

@Fax हाँ, लेकिन क्या मजबूत एन्क्रिप्शन का गठन उम्र भर एक चलती बार किया गया है। जर्मन WWII Enigma मशीन को क्रैक करना लगभग असंभव था (इसके बारे में एक बढ़िया फिल्म है)। आज, आपकी स्मार्ट घड़ी इसे आसानी से क्रैक कर सकती है। डेस को कभी मजबूत माना जाता था, जैसा कि एमडी 5 था। आज के मजबूत एन्क्रिप्शन ने भविष्य में भविष्य में क्वांटम कंप्यूटिंग तकनीकों के आसान शिकार का खतरा पैदा कर दिया है।
एरिक जे।

निश्चित रूप से, और क्रिप्टोग्राफी पर सलाह देने वाले पोस्ट और लेखों की तारीखों की जांच करना हमेशा एक अच्छा विचार है। कहा जा रहा है, मुझे पूरा यकीन है कि 2011 में भी सीज़र सिफर को कमजोर माना गया था।
फैक्स

39

हैशिंग और एन्क्रिप्शन / डिक्रिप्शन तकनीकों का मूल अवलोकन है।

हैशिंग:

आप अगर हैश किसी भी सादा पाठ फिर आप टुकड़ों में बंटी पाठ से एक ही सादा पाठ नहीं मिल सकता है । बस, यह एक तरह से प्रक्रिया है।

हैशिंग


एन्क्रिप्शन और डिक्रिप्शन:

यदि आप किसी सादे पाठ को फिर से कुंजी के साथ एन्क्रिप्ट करते हैं तो आप उसी (सिमेट्रिक) / डिफरेंशियल (एसिमेंट्रिक) कुंजी के साथ एन्क्रिप्टेड पाठ पर डिक्रिप्शन करके एक ही सादा पाठ प्राप्त कर सकते हैं

एन्क्रिप्शन और डिक्रिप्शन


अद्यतन: संपादित प्रश्न में वर्णित बिंदुओं को संबोधित करने के लिए।

1. जब हैश बनाम एनक्रिप्ट का उपयोग करना हो

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

यदि आप कहते हैं कि किसी को भेजने के लिए संदेश है तो एन्क्रिप्शन अच्छा है। आप संदेश को एक कुंजी के साथ एन्क्रिप्ट करते हैं और प्राप्तकर्ता मूल संदेश को वापस पाने के लिए उसी (या शायद एक अलग) कुंजी के साथ डिक्रिप्ट करता है। क्रेडिट


2. क्या हैश या एन्क्रिप्शन एल्गोरिथ्म को अलग करता है (एक सैद्धांतिक / गणितीय स्तर से) अर्थात जो हैश को अपरिवर्तनीय बनाता है (एक इंद्रधनुष के पेड़ की सहायता के बिना)

मूल रूप से हैशिंग एक ऑपरेशन है जो जानकारी खो देता है लेकिन एन्क्रिप्शन नहीं । आइए हमारी आसान समझ के लिए सरल गणितीय तरीके में अंतर देखें , बेशक दोनों में बहुत अधिक जटिल गणितीय संचालन है जिसमें पुनरावृत्ति शामिल है

एन्क्रिप्शन / डिक्रिप्शन (प्रतिवर्ती):

इसके अलावा :

4 + 3 = 7  

यह राशि लेने और जोड़ में से एक घटाकर उलटा किया जा सकता है

7 - 3 = 4     

गुणन :

4 * 5 = 20  

यह उत्पाद को लेने और कारकों में से एक द्वारा विभाजित करके उलटा किया जा सकता है

20 / 4 = 5    

इसलिए, यहाँ हम एक जोड़ सकते हैं / कारकों एक decrpytion कुंजी है और परिणाम (7,20) एक बहिष्कृत पाठ है।


हाशिंग (प्रतिवर्ती नहीं):

मोडुलो डिवीजन :

22 % 7 = 1   

इसे उलटा नहीं किया जा सकता है क्योंकि ऐसा कोई ऑपरेशन नहीं है जो आप विभाजक (या इसके विपरीत) के पुनर्गठन के लिए भागफल और लाभांश के लिए कर सकते हैं।

क्या आप 'कहां?' भरने के लिए एक ऑपरेशन पा सकते हैं। है?

1  ?  7 = 22  
1  ?  22 = 7

तो हैश फ़ंक्शन में मोडुलो डिवीजन के समान गणितीय गुणवत्ता होती है और जानकारी खो देती है।

क्रेडिट


26

मेरा एक लाइनर ... आम तौर पर साक्षात्कारकर्ता नीचे जवाब चाहते थे।

हैशिंग एक तरीका है। आप अपने डेटा / स्ट्रिंग को हैश कोड से परिवर्तित नहीं कर सकते।

एन्क्रिप्शन 2 तरीका है - यदि आपके पास कुंजी है तो आप एन्क्रिप्ट किए गए स्ट्रिंग को फिर से डिक्रिप्ट कर सकते हैं।


अरे! वह दो लाइन है।
मार्क स्टॉपर

17

एक हैश फ़ंक्शन पाठ के एक चर-आकार की मात्रा को एक निश्चित आकार के पाठ में बदल देता है।

हैश

स्रोत: https://en.wikipedia.org/wiki/Hash_function


Hash PHP में कार्य करता है

एक हैश स्ट्रिंग को एक हैशेड स्ट्रिंग में बदल देता है। निचे देखो।

HASH:

$str = 'My age is 29';
$hash = hash('sha1', $str);
echo $hash; // OUTPUT: 4d675d9fbefc74a38c89e005f9d776c75d92623e

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

DEHASH:

SHA1 एक तरह से हैश है। जिसका अर्थ है कि आप हैश को नष्ट नहीं कर सकते।

हालाँकि, आप हैश-ब्रूट-बल कर सकते हैं। कृपया देखें: https://hashkiller.co.uk/sha1-decrypter.aspx

MD5, एक और हैश है। इस वेबसाइट पर एक MD5 dehasher पाया जा सकता है: https://www.md5online.org/

हैश पर ब्रूट-बल हमलों में बाधा डालने के लिए एक नमक दिया जा सकता है। Php में आप password_hash()पासवर्ड हैश बनाने के लिए उपयोग कर सकते हैं । फ़ंक्शन password_hash()स्वचालित रूप से एक नमक बनाता है। पासवर्ड हैश (नमक के साथ) पर पासवर्ड को सत्यापित करने के लिएpassword_verify()

// Invoke this little script 3 times, and it will give you everytime a new hash
$password = '1234';  
$hash = password_hash($password, PASSWORD_DEFAULT);  

echo $hash; 
// OUTPUT 

$2y$10$ADxKiJW/Jn2DZNwpigWZ1ePwQ4il7V0ZB4iPeKj11n.iaDtLrC8bu 

$2y$10$H8jRnHDOMsHFMEZdT4Mk4uI4DCW7/YRKjfdcmV3MiA/WdzEvou71u 

$2y$10$qhyfIT25jpR63vCGvRbEoewACQZXQJ5glttlb01DmR4ota4L25jaW

एक पासवर्ड को एक से अधिक हैश के द्वारा दर्शाया जा सकता है। जब आप पासवर्ड का उपयोग करके अलग-अलग पासवर्ड हैश के साथ सत्यापित करते हैं password_verify(), तो पासवर्ड मान्य पासवर्ड के रूप में स्वीकार किया जाएगा।

$password = '1234';  

$hash = '$2y$10$ADxKiJW/Jn2DZNwpigWZ1ePwQ4il7V0ZB4iPeKj11n.iaDtLrC8bu';  
var_dump( password_verify($password, $hash) );  

$hash = '$2y$10$H8jRnHDOMsHFMEZdT4Mk4uI4DCW7/YRKjfdcmV3MiA/WdzEvou71u';  
var_dump( password_verify($password, $hash) );  

$hash = '$2y$10$qhyfIT25jpR63vCGvRbEoewACQZXQJ5glttlb01DmR4ota4L25jaW';  
var_dump( password_verify($password, $hash) );

// OUTPUT 

boolean true 

boolean true 

boolean true




एक एन्क्रिप्शन समारोह एक एन्क्रिप्शन कुंजी, और इसके विपरीत का उपयोग करके एक अतर्कसंगत सिफर में एक पाठ बदल देती है। यहाँ छवि विवरण दर्ज करें

स्रोत: https://en.wikipedia.org/wiki/Enc एन्क्रिप्शन


PHP में एन्क्रिप्शन

चलो कुछ PHP कोड में गोता लगाएँ जो एन्क्रिप्शन को हैंडल करता है।

--- मैक्रिप्ट का विस्तार ---

एन्क्रिप्ट करें:

$cipher = MCRYPT_RIJNDAEL_128;
$key = 'A_KEY';
$data = 'My age is 29';
$mode = MCRYPT_MODE_ECB;

$encryptedData = mcrypt_encrypt($cipher, $key , $data , $mode);
var_dump($encryptedData);

//OUTPUT:
string '„Ùòyªq³¿ì¼üÀpå' (length=16)

डिक्रिप्ट:

$decryptedData = mcrypt_decrypt($cipher, $key , $encryptedData, $mode);
$decryptedData = rtrim($decryptedData, "\0\4"); // Remove the nulls and EOTs at the END
var_dump($decryptedData);

//OUTPUT:
string 'My age is 29' (length=12)

--- ओपनएसएसएल विस्तार ---

7.1 में Mcrypt एक्सट्रैक्शन को हटा दिया गया था। और php 7.2 में हटा दिया गया। OpenSSL extention का उपयोग php 7 में किया जाना चाहिए। नीचे दिए गए कोड स्निपेट देखें:

$key = 'A_KEY';
$data = 'My age is 29';

// ENCRYPT
$encryptedData = openssl_encrypt($data , 'AES-128-CBC', $key, 0, 'IV_init_vector01');
var_dump($encryptedData);

// DECRYPT    
$decryptedData = openssl_decrypt($encryptedData, 'AES-128-CBC', $key, 0, 'IV_init_vector01');
var_dump($decryptedData);

//OUTPUT
string '4RJ8+18YkEd7Xk+tAMLz5Q==' (length=24)
string 'My age is 29' (length=12)

ध्यान दें कि PHP mcrypt अब तक हटा दिया गया है (मुझे उस के साथ कुछ करना पड़ सकता है) और वह SHA-1, MD5 और ECB सभी असुरक्षित माना जाता है। A_KEYहै एक एईएस / क्रिप्ट -128 कुंजी; यह एक पासवर्ड है, सहयोगी नहीं है।
मार्टन बोडेवेस

@MaartenBodewes हाँ यह सच है। OpenSSL अब सनक है। php.net/manual/en/book.openssl.php
जूलियन

10

सममित एन्क्रिप्शन:

सममित एन्क्रिप्शन को साझा कुंजी या साझा गुप्त एन्क्रिप्शन के रूप में भी संदर्भित किया जा सकता है। सममित एन्क्रिप्शन में, एक एकल कुंजी का उपयोग ट्रैफ़िक को एन्क्रिप्ट और डिक्रिप्ट करने दोनों के लिए किया जाता है।

यहाँ छवि विवरण दर्ज करें

असममित एन्क्रिप्शन:

असममित एन्क्रिप्शन को सार्वजनिक-कुंजी क्रिप्टोग्राफ़ी के रूप में भी जाना जाता है। असममित एन्क्रिप्शन मुख्य रूप से सममित एन्क्रिप्शन से भिन्न होता है जिसमें दो कुंजी का उपयोग किया जाता है: एक एन्क्रिप्शन के लिए और एक एन्क्रिप्शन के लिए। सबसे आम असममित एन्क्रिप्शन एल्गोरिथ्म है RSA

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

यहाँ छवि विवरण दर्ज करें

हैशिंग:

अंत में, हैशिंग एक क्रिप्टोग्राफ़िक सुरक्षा का एक रूप है जो एन्क्रिप्शन से अलग है। जबकि एन्क्रिप्शन एक दो कदम प्रक्रिया है जिसका उपयोग पहले एन्क्रिप्ट करने और फिर एक संदेश को डिक्रिप्ट करने के लिए किया जाता है, हैशिंग एक संदेश को अपरिवर्तनीय निश्चित-लंबाई मान, या हैश में सम्मिलित करता है। नेटवर्किंग में देखे जाने वाले सबसे आम हैशिंग एल्गोरिदम में से दो हैं MD5और SHA-1

यहाँ छवि विवरण दर्ज करें

यहां पढ़ें: http://packetlife.net/blog/2010/nov/23/symmetric-asymmetric-encryption-hashing/


क्षमा करें, मैं एक सुरक्षा newb हूं, लेकिन क्या आप "पेलोड डेटा की सुरक्षा के लिए आमतौर पर नियोजित" का अर्थ समझा सकते हैं?
अब्दुल

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

5
  1. हैश का उपयोग तब करें जब आपको केवल एक ही रास्ते पर जाने की आवश्यकता हो। उदाहरण के लिए, किसी सिस्टम में पासवर्ड के लिए, आप हैशिंग का उपयोग करते हैं क्योंकि आप कभी भी केवल यह सत्यापित करेंगे कि उपयोगकर्ता द्वारा दर्ज किया गया मान, हैशिंग के बाद, आपके रिपॉजिटरी में मूल्य से मेल खाता है। एन्क्रिप्शन के साथ, आप दो तरीकों से जा सकते हैं।

  2. हैशिंग एल्गोरिदम और एन्क्रिप्शन एल्गोरिदम सिर्फ गणितीय एल्गोरिदम हैं। तो उस संबंध में वे अलग नहीं हैं - इसके सभी गणितीय सूत्र। शब्दार्थ, हालांकि, हैशिंग (वन-वे) और एन्क्रिप्शन (टू-वे) के बीच बहुत बड़ा अंतर है। क्यों राख अपरिवर्तनीय हैं? क्योंकि वे उस तरह से डिज़ाइन किए गए हैं, क्योंकि कभी-कभी आप एक-तरफ़ा ऑपरेशन चाहते हैं।


4

एन्क्रिप्शन और हैश एल्गोरिदम समान तरीकों से काम करते हैं। प्रत्येक मामले में, बिट्स के बीच भ्रम और प्रसार पैदा करने की आवश्यकता है । उबला हुआ, भ्रम कुंजी और सिफरटेक्स और प्रसार के बीच एक जटिल संबंध बना रहा है प्रत्येक बिट की जानकारी को चारों ओर फैला रहा है।

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


4

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

जब यह प्राधिकरण के लिए आता है तो आप हैशिंग का उपयोग करते हैं। हैशिंग में कोई कुंजी नहीं है

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

हैशिंग अपरिवर्तनीय क्यों है:

हैशिंग प्रतिवर्ती नहीं है क्योंकि इनपुट-से-हैश मैपिंग 1-टू -1 नहीं है। एक ही हैश मान के लिए दो इनपुट मानचित्र होने को आमतौर पर "हैश टक्कर" के रूप में संदर्भित किया जाता है। सुरक्षा उद्देश्यों के लिए, "अच्छे" हैश फ़ंक्शन के गुणों में से एक यह है कि टकराव व्यावहारिक उपयोग में दुर्लभ हैं।


1
"हैशिंग प्रतिवर्ती नहीं है क्योंकि इनपुट-से-हैश मैपिंग 1-टू -1 नहीं है", धन्यवाद, मुझे लगता है कि यह बहुत महत्वपूर्ण कारक है जब यह एन्क्रिप्ट से हैश को अलग करने की बात आती है! :)
केनी कैसन

यह सामान्य हैश फ़ंक्शंस, क्रिप्टोग्राफ़िक हैश फ़ंक्शंस और पासवर्ड हैश के बीच स्पष्ट रूप से अंतर नहीं करता है। उन सभी में अलग-अलग गुण होते हैं।
मार्टन बोदवेस

-2

क्रिप्टोग्राफी संख्या और तार के साथ संबंधित है। मूल रूप से पूरे ब्रह्मांड में प्रत्येक डिजिटल चीजें संख्याएं हैं। जब मैं संख्या कहता हूं, तो इसके 0 & 1. आप जानते हैं कि वे क्या हैं, द्विआधारी। स्क्रीन पर आप जो चित्र देखते हैं, वह संगीत जो आप अपने ईयरफोन के माध्यम से सुनते हैं, सब कुछ बायनेरिज़ हैं। लेकिन हमारे कान और आंखें बायनेरिज़ को सही नहीं समझेंगे? केवल मस्तिष्क ही समझ सकता था, और भले ही वह बायनेरिज़ को समझ सकता हो, लेकिन वह बायनेरिज़ का आनंद नहीं ले सकता। इसलिए हम बायनेरिज़ को मानव के समझने योग्य प्रारूपों जैसे एमपी 3, जेपीजी, आदि में बदल देते हैं। प्रक्रिया को एन्कोडिंग के रूप में समाप्त करते हैं । यह दो तरह की प्रक्रिया है और आसानी से अपने मूल रूप में वापस डिकोड किया जा सकता है।

हैशिंग

हैशिंग एक अन्य क्रिप्टोग्राफी तकनीक है जिसमें डेटा को एक बार किसी अन्य रूप में परिवर्तित करने के बाद कभी वापस नहीं लिया जा सकता है। लैमैन के कार्यकाल में, डे-हैशिंग नामक कोई प्रक्रिया नहीं है । कार्य करने के लिए कई हैश फ़ंक्शन हैं जैसे कि sha-512, md5 और इसी तरह।

यदि मूल मूल्य पुनः प्राप्त नहीं किया जा सकता है, तो हम इसका उपयोग कहां करते हैं? पासवर्डों! जब आप अपने मोबाइल या पीसी के लिए पासवर्ड सेट करते हैं, तो आपके पासवर्ड का एक हैश बनाया जाता है और एक सुरक्षित स्थान पर संग्रहीत किया जाता है। जब आप अगली बार एक लॉगिन प्रयास करते हैं, तो दर्ज किए गए स्ट्रिंग को फिर से उसी एल्गोरिथ्म (हैश फ़ंक्शन) के साथ हैश किया जाता है और आउटपुट को संग्रहीत मान से मिलान किया जाता है। यदि यह समान है, तो आप लॉग इन हो जाते हैं। अन्यथा आपको बाहर निकाल दिया जाता है।

क्रेडिट: विकिमीडिया पासवर्ड के लिए हैश लगाकर, हम यह सुनिश्चित कर सकते हैं कि एक हमलावर को कभी भी हमारा पासवर्ड नहीं मिलेगा, भले ही वह संग्रहीत पासवर्ड फ़ाइल चोरी कर ले। हमलावर के पास पासवर्ड का हैश होगा। वह शायद सबसे अधिक इस्तेमाल किए जाने वाले पासवर्डों की एक सूची पा सकते हैं और उनमें से प्रत्येक के लिए sha-512 लागू कर सकते हैं और अपने हाथ में मूल्य के साथ तुलना कर सकते हैं। इसे डिक्शनरी अटैक कहा जाता है । लेकिन वह ऐसा कब तक करेगा? यदि आपका पासवर्ड पर्याप्त यादृच्छिक है, तो क्या आपको लगता है कि क्रैकिंग का यह तरीका काम करेगा? फेसबुक, गूगल और अमेज़ॅन के डेटाबेस में सभी पासवर्ड हैशेड हैं, या कम से कम उन्हें हैशेड माना जाता है।

फिर एन्क्रिप्शन है

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

सममित कुंजी एन्क्रिप्शन

मैं चीजों को उतना ही सरल रखने की कोशिश कर रहा हूं जितना मैं कर सकता था। तो, चलो एक पाली एल्गोरिथ्म के माध्यम से सममित एन्क्रिप्शन को समझते हैं। इस एल्गोरिथ्म का उपयोग अक्षरों को या तो बाएँ या दाएँ स्थानांतरित करके वर्णमाला को एन्क्रिप्ट करने के लिए किया जाता है। आइए एक स्ट्रिंग CRYPTO लें और एक संख्या +3 पर विचार करें। फिर, CRYPTO का एन्क्रिप्टेड प्रारूप FUBSWR होगा। इसका मतलब है कि प्रत्येक अक्षर को 3 स्थानों पर दाईं ओर स्थानांतरित किया गया है। इधर, शब्द क्रिप्टो कहा जाता है सादा पाठ , उत्पादन FUBSWR कहा जाता है बीजलेख , मूल्य +3 कहा जाता है एन्क्रिप्शन कुंजी (सममित कुंजी) और पूरी प्रक्रिया एक है सिफर। यह सबसे पुराना और बुनियादी सममित कुंजी एन्क्रिप्शन एल्गोरिथम है और इसका पहला उपयोग जूलियस सीज़र के समय में बताया गया था। तो, यह उसके नाम पर रखा गया था और यह प्रसिद्ध सीज़र सिफर है । जो कोई भी एन्क्रिप्शन कुंजी जानता है और सीज़र के एल्गोरिथ्म के रिवर्स को लागू कर सकता है और मूल प्लेनटेक्स्ट को पुनः प्राप्त कर सकता है। इसलिए इसे एक सममित एन्क्रिप्शन कहा जाता है ।

असममित कुंजी एन्क्रिप्शन

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

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

स्रोत: डमीज के लिए एसएसएल / टीएलएस भाग 1: सिफरसुइट, हाशिंग, एन्क्रिप्शन | WST ( https://www.wst.space/ssl-part1-ciphersuite-hashing-enc एन्क्रिप्शन // )


-3

एन्क्रिप्शन एन्क्रिप्शन का उद्देश्य डेटा को गुप्त रखने के लिए डेटा को बदलना है उदाहरण के लिए (किसी को एक गुप्त पाठ भेजना जो वे केवल पढ़ने में सक्षम होना चाहिए, इंटरनेट के माध्यम से पासवर्ड भेजना)।

प्रयोज्य पर ध्यान केंद्रित करने के बजाय लक्ष्य यह सुनिश्चित करना है कि डेटा भेजने को गुप्त रूप से भेजा जा सकता है और यह केवल उस उपयोगकर्ता द्वारा देखा जा सकता है जिसे आपने भेजा था।

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

एन्क्रिप्शन बस इस FhQp6U4N28GITVGjdt37hZN की तरह लग सकता है

हैशिंग तकनीकी रूप से हम इसे एक मनमाना इनपुट के रूप में कह सकते हैं और एक निश्चित लंबाई स्ट्रिंग का उत्पादन कर सकते हैं।

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

अगर हैश गलत है और हैश के साथ मेल नहीं खाता है तो हम किसी भी जानकारी को नहीं देख सकते हैं। जैसे (MD5, SHA .....)

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