2010-04-24 10 views
6

मैं हैश रेंज (एमडी 5 या शा 1) लेना चाहता हूं और इसे एन बराबर श्रेणियों में विभाजित कर रहा हूं।एन बराबर रेंजों में स्प्लिट एंट्री हैश रेंज

उदाहरण के लिए, यदि एम (num नोड्स) = 5, तो संपूर्ण हैश रेंज 5 से विभाजित की जाएगी ताकि प्रमुख श्रेणियों का एक समान वितरण होगा। मैं एन = 1 (नोड 1) चाहता हूं कि हैश रेंज की शुरुआत से 1/5, 2 1/5 से 2/5 तक, अंत तक सभी तरह से हो।

असल में, मुझे प्रत्येक एन में मैप किए जाने वाली प्रमुख श्रेणियों की आवश्यकता होती है, जब मेरे पास एक मूल्य है, तो यह जानता है कि कौन सी एन उस सीमा का ख्याल रखेगी।

मैं हैशिंग के लिए नया हूं और थोड़ा सा अनिश्चित हूं कि मैं इस परियोजना को हल करने के लिए कहां से शुरू कर सकता हूं। कोई भी मदद जो आप दे सकते हैं वह बहुत अच्छा होगा।

+0

यह आप कैसे उपयोग n भ्रामक है दोनों श्रेणियों की संख्या में विभाजित करने के लिए, और उन में से एक के लिए एक सूचकांक के रूप में के रूप में एन भागों। – Joren

+0

यह पूरा सवाल उलझन में है और मैं अनुमान लगा रहा हूं कि आप जो भी करने की कोशिश कर रहे हैं, जो भी हो, असंभव है क्योंकि क्रिप्टोग्राफिक हैश फ़ंक्शन प्रभावी रूप से अपरिवर्तनीय हैं। –

+0

मैंने एन के संदिग्ध उपयोग को ठीक करने और थोड़ा और समझाने की कोशिश करने के बारे में कुछ प्रश्नों को बदल दिया। – noxtion

उत्तर

1

यदि आप पूर्वाग्रह को हटाने के लिए थोड़ा मुश्किल खड़े हो सकते हैं (दो में से किसी भी शक्ति को समान रूप से 5 में विभाजित करना असंभव है, तो कुछ पूर्वाग्रह होना चाहिए), फिर मॉड्यूलो (सी में सी 0-और सी- सिंटैक्स की तरह) पूर्ण सीमा को लगभग 5 समान रूप से आकार वाले विभाजनों में विभाजित करने का तरीका है।

कोई भी संदेश mmd5(m)%5==0 के साथ पहली बार विभाजन में है, आदि

0

आप "बकेट" के एक नंबर में एक हैश मान रखने के लिए समान रूप से, तो कुछ सरल गणितीय चाल करना होगा देख रहे हैं। बढ़ते किनारे के मामलों के लिए देखें ... आप BUCKETS मूल्य के लिए 2 की शक्ति का उपयोग करना बेहतर होगा।

यह अजगर कोड, जिस तरह से, जो बड़े पूर्णांकों का समर्थन करता है के द्वारा होता है ...

BUCKETS = 5 
BITS  = 160 

BUCKETSIZE = 2**BITS/BUCKETS 

int('ad01c5b3de58a02a42367e33f5bdb182d5e7e164', 16)/BUCKETSIZE == 3 
int('553ae7da92f5505a92bbb8c9d47be76ab9f65bc2', 16)/BUCKETSIZE == 1 
int('001c7c8c5ff152f1cc8ed30421e02a898cfcfb23', 16)/BUCKETSIZE == 0 
संबंधित मुद्दे