मैं कुछ डेटा ऑब्जेक्ट्स का 32-बिट हैश बनाने के लिए देख रहा हूं। चूंकि मुझे अपना हैश फ़ंक्शन लिखना पसंद नहीं है और एमडी 5 उपलब्ध है, मेरा वर्तमान दृष्टिकोण एमडी 5 हैश से पहले 32 बिट्स (यानी पहले 8 हेक्स अंक) का उपयोग करना है। क्या यह स्वीकार्य है?क्या एमडी 5 हैश के पहले 32 बिट्स किसी अन्य सबस्ट्रिंग के रूप में "यादृच्छिक" के रूप में हैं?
दूसरे शब्दों में, किसी भी अन्य सबस्ट्रिंग के रूप में "यादृच्छिक" के रूप में एक एमडी 5 हैश की पहली 32 बिट्स हैं? या क्या कोई कारण है कि मैं आखिरी 32 बिट्स पसंद करूंगा? या शायद चार 32-बिट सबस्ट्रिंग एक साथ XOR'ing?
कुछ रिक्तिपूर्व स्पष्टीकरण:
- इन हैश क्रिप्टोग्राफी द्वारा सुरक्षित होने की जरूरत नहीं है।
- मैं एमडी 5 के प्रदर्शन से चिंतित नहीं हूं - यह मेरी आवश्यकताओं के लिए पर्याप्त तेज़ है।
- इन हैंशों को केवल "यादृच्छिक" होने की आवश्यकता है कि टक्कर दुर्लभ हैं।
- इस प्रणाली में, वस्तुओं की संख्या 10,000 से अधिक नहीं होनी चाहिए (यथार्थ रूप से यह संभवतः आधे से अधिक नहीं होने वाला है)। तो सबसे बुरे मामले में किसी भी टकराव का सामना करने की संभावना लगभग 1% होनी चाहिए (माना जाता है कि पर्याप्त "यादृच्छिक" हैश पाया जाता है)।
क्या आपके पास पहले से ही एक MD5 हैश गणना की गई है? (उदाहरण के लिए सबवर्सन चेकइन के मेटाडेटा के हिस्से के रूप में) या क्या आपको एमडी 5 हैश की गणना करना है? यदि उत्तरार्द्ध, मैं w/@ जोहान्स की टिप्पणी से सहमत हूं, सीआरसी 32 बहुत आसान होगा। –
जाहिर है, "आपका प्रश्न अमान्य है क्योंकि आपको इसे इस तरह से करना चाहिए" टिप्पणियों को संबोधित करने के लिए एसओ पर कोई रास्ता नहीं है ... – Kip
क्षमा करें, मेरा मतलब यह नहीं था कि * एमडी 5 हैश का उपयोग न करें, मैं बस मतलब एक सीआरसी 32 आसान है। आप या आपके ग्राहक एकमात्र ऐसे हैं जो निर्णय ले सकते हैं कि एल्गोरिदम आपकी आवश्यकताओं को पूरा करता है। –