क्रिप्टोग्राफ़िक हैश फ़ंक्शन एक परिवर्तन है जो एक इनपुट (या संदेश) बनाता है और एक निश्चित आकार की स्ट्रिंग को पुनर्स्थापित करता है, जिसे हैश मान के रूप में जाना जाता है। एक हैश मान h फॉर्म के फ़ंक्शन H द्वारा निर्मित होता है -
h =H(M)
जहां एम चर लंबाई संदेश है और एच (एम) निश्चित लंबाई हैश मान है।
हैश फ़ंक्शन आमतौर पर सुरक्षा को निष्पादित करने के लिए क्रिप्टोग्राफी में गणितीय कार्यों का उपयोग किया जाता है। एक हैश फ़ंक्शन किसी भी मनमाने आकार के इनपुट मान को afixed-size मान में बदल देता है। अत:आगत किसी भी लम्बाई का हो सकता है लेकिन उत्पादित उत्पादन हमेशा एक निश्चित लंबाई का होता है। उत्पन्न आउटपुट को हैश मान या हैश के रूप में जाना जाता है।
हैशिंग का सामान्य उपयोग पासवर्ड जाँच है। जब उपयोगकर्ता पासवर्ड दर्ज करता है, तो पासवर्ड का हैश बनाया जाता है और डेटाबेस में हैश के साथ तुलना की जाती है। यदि दोनों हैश समान हैं तो उपयोगकर्ता लॉगिन करने के लिए सक्षम है अन्यथा उपयोगकर्ता को फिर से पासवर्ड दर्ज करने की आवश्यकता है।
स्रोत पर संदेश में हैश मान उस समय जोड़ा जाता है जब संदेश को सही माना जाता है या जाना जाता है। रिसीवर संदेश को हैश मान की पुनर्गणना करके सत्यापित करता है।
एक हैश फ़ंक्शन इनपुट के रूप में किसी भी लंबाई की एक स्ट्रिंग बनाता है और एक निश्चित लंबाई स्ट्रिंग बनाता है जो समर्थित जानकारी के लिए एक प्रकार के हस्ताक्षर के रूप में सुविधा प्रदान करता है। इस दृष्टिकोण में, हैश मान को समझने वाला व्यक्ति मूल संदेश पर काम करने में असमर्थ है, लेकिन मूल संदेश को समझने वाला व्यक्ति यह साबित कर सकता है कि हैश उस संदेश से उत्पन्न हुआ है।
एक क्रिप्टोग्राफ़िक हैश फ़ंक्शन को एक यादृच्छिक फ़ंक्शन की तरह कार्य करना चाहिए, जबकि अभी भी नियतात्मक और प्रभावी रूप से गणना योग्य है। क्रिप्टोग्राफ़िक हैश फ़ंक्शंस क्रिप्टोग्राफी के क्षेत्र में आवश्यक उपकरण हैं और इसका उपयोग कई सुरक्षा उद्देश्यों जैसे प्रामाणिकता, डिजिटल हस्ताक्षर, छद्म संख्या पीढ़ी, डिजिटल स्टेग्नोग्राफ़ी, डिजिटल टाइम स्टैम्पिंग आदि को पूरा करने के लिए किया जाता है।
हैश फ़ंक्शन की कुछ आवश्यकताएं इस प्रकार हैं -
हैश फ़ंक्शन किसी फ़ाइल, संदेश या सूचना के किसी अन्य ब्लॉक का फ़िंगरप्रिंट बनाता है। हैश फंक्शन, एच में निम्नलिखित गुण होने चाहिए जो इस प्रकार हैं -
-
हैश फ़ंक्शन का उपयोग किसी भी आकार की जानकारी के ब्लॉक में किया जा सकता है।
-
एच (एक्स) किसी दिए गए एक्स की गणना करने के लिए अपेक्षाकृत सरल है, हार्डवेयर और सॉफ्टवेयर कार्यान्वयन दोनों को व्यावहारिक बनाता है।
-
किसी दिए गए मान, h के लिए, x को इस प्रकार ज्ञात करना कम्प्यूटेशनल रूप से असंभव है कि H (x) =h। इसे एकतरफा संपत्ति के रूप में परिभाषित किया गया है।
-
किसी दिए गए ब्लॉक x के लिए, y ≠ x को H (y)=H (x) के साथ खोजना कम्प्यूटेशनल रूप से असंभव है। इस संपत्ति को कमजोर टक्कर प्रतिरोध के रूप में परिभाषित किया गया है।
-
कुछ जोड़ी (x, y) को खोजना कम्प्यूटेशनल रूप से असंभव है जैसे कि H (x) =H (y)। इस संपत्ति को एक मजबूत टक्कर प्रतिरोध कहा जाता है।