यदि आप गति चाहते हैं, हैश नहीं है! विशेष रूप से एमडी 5 की तरह एक क्रिप्टोग्राफिक हैश नहीं। इन हैंश को रिवर्स करना असंभव होने के लिए डिज़ाइन किया गया है, गणना करने के लिए तेज़ी से नहीं। आपको क्या उपयोग करना चाहिए चेकसम - java.util.zip.Checksum
और इसके दो ठोस कार्यान्वयन देखें। Adler32 गणना करने के लिए बेहद तेज़ है।
चेकसम या हैंश पर आधारित कोई भी विधि टकराव के लिए कमजोर है, लेकिन आप आरएसवाईएनसी के तरीके में दो अलग-अलग तरीकों का उपयोग करके जोखिम को कम कर सकते हैं।
एल्गोरिथ्म मूल रूप से है:
- चेक फ़ाइल आकार बराबर
- मिलान ब्लॉक के प्रत्येक जोड़ी पर
- कंप्यूट चेकसम आकार एन बाइट्स की मात्रा में फ़ाइलों को तोड़ और तुलना कर रहे हैं। कोई अंतर साबित करता है कि फाइलें समान नहीं हैं।
यह एक अंतर की जल्दी पहचान के लिए अनुमति देता है। आप अलग-अलग एल्गोरिदम, या विभिन्न ब्लॉक आकारों के साथ एक बार में दो चेकसम की गणना करके इसे बेहतर बना सकते हैं।
परिणाम में अधिक बिट्स का मतलब टकराव का कम मौका है, लेकिन जैसे ही आप 64 बिट्स पर जाते हैं, आप जावा (और कंप्यूटर का सीपीयू) मूल रूप से संभाल सकते हैं और इसलिए धीमे हो जाते हैं, इसलिए एफएनवी-1024 कम है आपको झूठी नकारात्मक देने की संभावना है लेकिन बहुत धीमी है।
यदि यह गति के बारे में है, तो केवल एडलर 32 का उपयोग करें और स्वीकार करें कि बहुत ही कम अंतर नहीं मिलेगा। यह वास्तव में दुर्लभ है। इस तरह के चेकसम का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि इंटरनेट ट्रांसमिशन त्रुटियों को खोज सके, और आप कितनी बार गलत डेटा बदलते हैं?
यह वास्तव में सटीकता के बारे में है, आपको हर बाइट की तुलना करना होगा। कुछ और काम नहीं करेगा।
यदि आप गति और सटीकता के बीच समझौता कर सकते हैं, तो वहां विकल्पों का भरपूर धन है।
स्रोत
2011-04-12 12:40:54
क्षमा करें, लेकिन यह सिर्फ एक भयानक विचार है।आपके द्वारा उपयोग किए जाने वाले हैश फ़ंक्शन के बावजूद टकराव का उत्पादन करना मुश्किल होगा। इसके साथ ही "हैश" के लिए फ़ाइल के पहले 10 अक्षर भी ले सकते हैं। – bdares
आप जिन फाइलों की तुलना करेंगे, उनके बारे में आप क्या जानते हैं? सबसे पहले आप अपने हैश के हिस्से के रूप में फ़ाइल आकार का उपयोग कर सकते हैं। आपके फाइल सिस्टम पर हजारों (या सैकड़ों हजारों) फ़ाइलों में से, दो फाइलों का एक बहुत ही कम प्रतिशत है, जिसमें एक ही फाइलसाइज है ... – SyntaxT3rr0r