2011-12-06 11 views
5

वहाँ के साथ किसी भी 32-बिट चेकसम एल्गोरिथ्म हैं या तो: आकारसीआरसी 32 की तुलना में 32-बिट चेकसम एल्गोरिदम बेहतर गुणवत्ता?

  • छोटे इनपुट डेटा के लिए हैश टक्कर संभावना < 1 KB?
  • अधिक समान वितरण के साथ टकराव हिट।

ये सीआरसी 32 के सापेक्ष हैं। 32 बिट्स की स्टोरेज स्पेस की सीमा के कारण, मैं वास्तव में पहली संपत्ति पर गिनती नहीं कर रहा हूं। लेकिन दूसरे के लिए ... लगता है कि सुधार हो सकता है।

कोई विचार? धन्यवाद। (मुझे कंक्रीट कार्यान्वयन की आवश्यकता है, सी में बेहतर है, लेकिन सी ++/सी # या शुरू करने के लिए कुछ भी ठीक है)।

+0

क्या आप इसे त्रुटि-सुधार प्रणाली में चेकसम के रूप में उपयोग कर रहे हैं, या आप इसे हैश फ़ंक्शन के रूप में उपयोग कर रहे हैं-शायद यह पता लगाने के लिए कि दो इनपुट उनके हैंश की तुलना करके अलग हैं? कोड-हैश फ़ंक्शन में त्रुटि-सुधार करने के लिए अलग-अलग वांछनीय गुण होते हैं। सीआरसी 32 के मामले में, यह विशेष रूप से एक शोर रेखा (एक बिट या कुछ बिट्स अंतर, जो सुनिश्चित नहीं है) पर आप जिस प्रकार की अपेक्षा करते हैं उसकी त्रुटियों का पता लगाने के लिए डिज़ाइन किया गया है। –

+0

मैं इसे छोटे डेटा के दो किनारों की तुलना करने के लिए हैश फ़ंक्शन के रूप में उपयोग कर रहा हूं। (<1 केबी)। लेकिन मुझे 32-बिट हैश करने के लिए मजबूर किया गया है। –

उत्तर

4

कैसे MurmurHash? यह said है, कि इस हैश में अच्छा वितरण (पास ची-स्क्वायर टेस्ट) और अच्छा हिमस्खलन प्रभाव है। भी बहुत अच्छी कंप्यूटिंग गति।

0

पहले मानदंडों के लिए नहीं। 32 बिट आउटपुट के साथ किसी भी अच्छी तरह से डिज़ाइन किए गए हैश फ़ंक्शन में इनपुट में से किसी भी जोड़ी के लिए टकराव के 2^32 मौके हैं। दूसरा मानदंड बहुत अच्छी तरह परिभाषित नहीं है, हालांकि निश्चित रूप से कुछ सांख्यिकीय परीक्षणों का उपयोग किया जा सकता है, और मुझे यकीन है कि किसी ने इसे किया है (टक्कर अंतराल के लिए ची-स्क्वायर?)। कार्यान्वयन की आवश्यकता के लिए, मैं दृढ़ता से अनुशंसा करता हूं कि आप एक हैश फ़ंक्शन के लिए प्रस्तावित कोड स्वीकार न करें जो एक प्रसिद्ध हैश का कार्यान्वयन नहीं है, क्योंकि सुरक्षा समस्याएं या खराब प्रदर्शन होने का उच्च जोखिम आपके स्वयं के हैश या एन्क्रिप्शन को घुमाने पर होता है । एक प्रसिद्ध लेकिन खराब हैश फ़ंक्शन आपके द्वारा डिज़ाइन किए गए एक से बेहतर है, भले ही बाद वाला एक अच्छा परीक्षण करे और उसके पास 'अच्छा' टकराव वितरण हो, क्योंकि केवल पूर्व में इसके बारे में अधिक आंखें हैं।

+0

क्या सीआरसी 32 इस परिभाषा से "अच्छी तरह से डिज़ाइन किया गया हैश फ़ंक्शन" है? यह कुछ प्रकार की त्रुटियों का पता लगाने के लिए डिज़ाइन किया गया है, इसलिए मैं अन्य प्रकार के अंतर की कीमत पर, कुछ प्रकार के अंतर के साथ इनपुट की अपेक्षा करता हूं ताकि पहचान की अधिक संभावना हो (यानी, अलग सीआरसी मूल्य)। –

संबंधित मुद्दे