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