आप सबसे सही हैं। यदि आपके सिस्टम में कोई विरोधी नहीं है, तो क्रिप्टोग्राफ़िक हैश-फ़ंक्शंस का उपयोग करके उनकी सुरक्षा गुणों को ओवरकिल किया जाता है।
टक्कर बिट्स, ख, अपने हैश समारोह की की संख्या पर निर्भर और हैश के संख्या को महत्व देता, एन, आप की गणना करने का अनुमान है। अकादमिक साहित्य का बचाव इस टकराव की संभावना हार्डवेयर त्रुटि संभावना को हल करना चाहिए, इसलिए डेटा बाइट-बाय-बाइट [ref1, ref2, ref3, ref4, ref5] की तुलना करने की तुलना में हैश फ़ंक्शन के साथ टकराव करने की संभावना कम है। हार्डवेयर त्रुटि संभावना 2^-12 और 2^-15 [ref6] की सीमा में है। आप उत्पन्न करने की आशा करते एन = 2^क्ष हैश मान तो अपने टक्कर संभावना इस समीकरण है, जो पहले से ही birthday paradox ध्यान में रखा जाता द्वारा दी जा सकती:
अपने हैश समारोह के बिट्स की संख्या है इसकी कम्प्यूटेशनल जटिलता के लिए सीधे आनुपातिक। तो स्वीकार्य मूल्यों पर टकराव की संभावना को बनाए रखने में सक्षम होने के दौरान, आप न्यूनतम बिट्स के साथ हैश फ़ंक्शन ढूंढने में रुचि रखते हैं।
यहाँ कैसे है कि विश्लेषण बनाने के लिए पर एक उदाहरण है:
कि समीकरण कई हैश आकार के लिए टक्कर संभावना से है निम्नलिखित:
- पी (हैश = 64 बिट्स) = 2^(2 * 25-64 + 1) = 2^-13 (की तुलना में कम 2^-12)
- पी (हैश = 128 बिट) = 2^(2 * 25-128 + 1) 2^-77 (की तुलना में कम ज्यादा रास्ता 2^-12)
अब आपको यह तय करने की आवश्यकता है कि 64 का कौन सा गैर-क्रिप्टोग्राफ़िक हैश फ़ंक्शन या 128 बिट्स का उपयोग आप 64 बिट्स को हार्डवेयर त्रुटि संभावना के करीब बहुत जानते हैं (लेकिन तेज़ हो जाएगा) और 128 बिट्स एक अधिक सुरक्षित विकल्प (हालांकि धीमे) हैं।
बोले आप गैर-क्रिप्टोग्राफिक हैश फ़ंक्शंस के विकिपीडिया से हटाई गई एक छोटी सूची पा सकते हैं। मैं Murmurhash3 जानते हैं और यह किसी भी क्रिप्टोग्राफिक हैश समारोह की तुलना में बहुत तेजी से होता है:
- Fowler–Noll–Vo: 32, 64, 128, 256, 512 और 1024 बिट
- Jenkins: 64 और 128 बिट
- MurmurHash: 32, 64, 128, और 160 बिट
- CityHash: 64, 128 और 256 बिट
सबसे पहले, इसे समझाने के लिए समय देने के लिए धन्यवाद; मैं वास्तव में इसकी प्रशंसा करता हूँ। दूसरा, मैं एक स्पष्ट प्रश्न पूछना चाहता था: आप एक बड़ी संख्या में फाइलों के विरुद्ध एक विरोधी के खिलाफ अलग-अलग बचाव कैसे करते हैं? क्या अंतिम परिणाम समान नहीं है: पर्याप्त डेटा की पीढ़ी जो आपको आखिरकार डेटा के दो टुकड़े मिलती है जो हैश समान है? (या तो यादृच्छिक रूप से, या एल्गोरिदम के लक्षित विश्लेषण के माध्यम से।) –