के लिए हैशिंग फ़ंक्शन मैं अभी एक प्रोग्राम लिख रहा हूं जो एक निश्चित फ़ंक्शन से आउटपुट के रूप में चार हस्ताक्षरित 32-बिट पूर्णांक उत्पन्न करता है। मैं इन चार पूर्णांकों को हैश करना चाहता हूं, इसलिए मैं इस फ़ंक्शन के आउटपुट की तुलना भविष्य के आउटपुट से कर सकता हूं।चार हस्ताक्षरित पूर्णांक (सी ++)
हालांकि मुझे एक सभ्य हैशिंग फ़ंक्शन लिखने में परेशानी हो रही है। जब मैंने मूल रूप से इस कोड को लिखा, तो मैंने चार पूर्णांकों में से प्रत्येक के एक साधारण जोड़ में फेंक दिया, जिसे मैं जानता था कि पर्याप्त नहीं होगा। मैंने कई अन्य तकनीकों की कोशिश की है, जैसे स्थानांतरण और जोड़ना, इसका कोई फायदा नहीं हुआ। मुझे एक हैश मिलता है, लेकिन यह खराब गुणवत्ता का है, और समारोह टकराव का एक टन उत्पन्न करता है।
हैश आउटपुट या तो 32-बिट या 64-बिट पूर्णांक हो सकता है। प्रश्न में कार्य कई अरबों हैंश उत्पन्न करता है, इसलिए टकराव यहां एक वास्तविक समस्या है, और मैं यह सुनिश्चित करने के लिए एक बड़े चर का उपयोग करने के लिए तैयार हूं कि जितना संभव हो उतने टकराव हैं।
क्या कोई मुझे गुणवत्ता हैश फ़ंक्शन लिखने का तरीका जानने में मदद कर सकता है?
"मैं इन चार पूर्णांकों को हैश करना चाहता हूं, इसलिए मैं इस फ़ंक्शन के आउटपुट की तुलना भविष्य के आउटपुट से कर सकता हूं।" जरूरी नहीं है। यदि आप स्ट्रिंग आउटपुट के फ़ंक्शन का परीक्षण कर रहे थे, तो आपको रिग्रेशन परीक्षण करने के लिए 32 या 64 बिट्स तक हैश नहीं करना पड़ेगा। 50% स्टोरेज स्पेस को बचाने के लिए आप अपने मामले में सिरदर्द दे रहे हैं (मान लीजिए कि आप 128 के बजाय 64 बिट्स का उपयोग करते हैं)। यह इसके लायक है? क्या आपने इसके बजाए gzip का उपयोग करने की कोशिश की है? –
क्या आपने निम्न सामान्य उद्देश्यों में से एक या अधिक का उपयोग करने पर विचार किया है: http://www.partow.net/programming/hashfunctions/index.html –