Hash एक ऐसा function होता है जो की convert करता है एक value को दूसरे में। Hashing data एक ऐसा common practice है computer science की दुनिया में जिसका की इस्तमाल बहुत सी जगहों में होता है। उदाहरण के लिए, cryptography, compression, checksum generation, और data indexing।
Hashing एक natural fit है cryptography के लिए क्यूँकि ये mask कर देता है original data को वो भी एक दूसरे value के साथ। एक hash function का इस्तमाल होता है एक ऐसी value को पैदा करने के लिए जिसे की केवल उसी वैल्यू से डीकोड किया जा सकता है जिसे की आप hash table से प्राप्त करते हैं। इसमें table आपका एक array, database, या कोई दूसरा data structure हो सकता है। एक अच्छा cryptographic hash function असल में non-invertible होता है, इसका मतलब की इसे reverse engineered नहीं किया जा सकता है।
चूंकि हैशेड मान आम तौर पर मूल से छोटे होते हैं, इसलिए हैश फ़ंक्शन के लिए डुप्लिकेट हैशेड मान उत्पन्न करना संभव है। इन्हें “टकराव” के रूप में जाना जाता है और तब होता है जब विभिन्न स्रोत डेटा से समान मान उत्पन्न होते हैं। कई हैश फ़ंक्शन का उपयोग करके या डुप्लिकेट हैश किए गए मानों का सामना होने पर ओवरफ़्लो तालिका बनाकर टकराव को हल किया जा सकता है। बड़े हैश मानों का उपयोग करके टकराव से बचा जा सकता है।
बहुत से अलग अलग प्रकार के compression, जैसे की lossy image compression और media compression का इस्तमाल होता है, जिससे की फ़ाइल साइज़ को कम किया जा सके यदि उन्हें hash functions के साथ इस्तमाल किया जाए तब।
डेटा को Hashing करने पर छोटे छोटे values में, तब मीडिया फ़ाइल्ज़ को आसानी से छोटे छोटे टुकड़ों में compress किया जा सकता है। इस प्रकार के one-way hashing को reverse नहीं किया जा सकता है, लेकिन ये बहुत से आसानी से उत्पन्न कर सकता है एक approximation वो भी अरिजिनल डेटा का जो की काफ़ी कम डिस्क स्पेस लेता है।
Hashes का इस्तमाल checksums बनाने के लिए भी होता है, जो की validate करते हैं फ़ाइल्ज़ की integrity को। एक checksum एक छोटा मान है जो किसी फ़ाइल या डेटा के ब्लॉक जैसे डिस्क छवि में बिट्स के आधार पर उत्पन्न होता है। जब चेकसम फ़ंक्शन फ़ाइल की एक प्रति (जैसे इंटरनेट से डाउनलोड की गई फ़ाइल) पर चलाया जाता है, तो उसे मूल फ़ाइल के समान हैशेड मान उत्पन्न करना चाहिए। यदि फ़ाइल समान चेकसम उत्पन्न नहीं करती है, तो फ़ाइल में कुछ बदल गया था।
आख़िर में, hashes का इस्तमाल होता है डेटा को index करने के लिए। हाशिंग वैल्यू का इस्तमाल होता है data को map करने के लिए वो भी individual “buckets” में एक hash table के भीतर। प्रत्येक bucket की एक unique ID होती है जो की जो मूल डेटा के सूचक के रूप में कार्य करती है। यह एक इंडेक्स बनाता है जो मूल डेटा से काफी छोटा होता है, जिससे मूल्यों को खोजा जा सकता है और अधिक कुशलता से एक्सेस किया जा सकता है।