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




encryption hash (9)

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

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

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

यहां कुछ समान SO प्रश्न हैं जो मैं जितना विस्तार कर रहा था उतना विस्तार नहीं किया:

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


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

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

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

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

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


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

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


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

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

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


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

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

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

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

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

उदाहरण:

Input    Hash
0010     0
0011     1
0110     1
1000     0

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

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

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

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

Input   Encrypted
CAT     DBU
ZOO     APP

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


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

हैश फ़ंक्शंस

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

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

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

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

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

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

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

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

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

डेटा हस्ताक्षर करने के लिए हैश फ़ंक्शन भी बहुत अच्छे हैं। उदाहरण के लिए, यदि आप एचएमएसी का उपयोग कर रहे हैं, तो आप एक ज्ञात लेकिन प्रेषित मूल्य (एक गुप्त मूल्य) के साथ एकत्रित डेटा का हैश लेकर डेटा का एक टुकड़ा हस्ताक्षर करते हैं। तो, आप सादा पाठ और एचएमएसी हैश भेजते हैं। फिर, रिसीवर बस सबमिट किए गए डेटा को ज्ञात मूल्य के साथ रखता है और यह देखने के लिए जांच करता है कि यह प्रेषित एचएमएसी से मेल खाता है या नहीं। यदि यह वही है, तो आप जानते हैं कि यह गुप्त मूल्य के बिना किसी पार्टी द्वारा छेड़छाड़ नहीं किया गया था। इसका उपयोग आमतौर पर 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);
}

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

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

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

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

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

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

hash1 = sha1(password + salt);

अब, hash1 में 0.001% की टक्कर की संभावना है। लेकिन जब हम अगले hash2 = sha1(hash1); , hash1 सभी टकराव स्वचालित रूप से hash2 टकराव बन गए हैं । तो अब, हमारे पास हैश 1 की दर 0.001% है, और दूसरी sha1() कॉल उसमें जोड़ती है। तो अब, hash2 में 0.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 समारोह के रूप में टकराव का एक ही मौका है। आप जो चाहते हैं वह है। इसके बजाय इसका प्रयोग करें।


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

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


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

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

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

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

आइए इसे क्रिया में देखें। मैं इसके लिए PHP का उपयोग करता हूं।

HASH:

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

DEHASH:

एसएचए 1 एक तरफा हैश है। जिसका मतलब है कि आप हैश को नहीं हटा सकते हैं।

हालांकि, आप हैश को बलपूर्वक बल दे सकते हैं।

कृपया देखें: https://hashkiller.co.uk/sha1-decrypter.aspx

आप इस वेबसाइट पर एमडी 5 डेहशेर पा सकते हैं: http://md5portal.com/

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

$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)

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

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

विषम एन्क्रिप्शन:

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

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

hashing:

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

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


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

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

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

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







cryptography