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