में परिवर्तित करें md5 हैश को मॉड्यूलस ऑपरेशन करने के लिए एक अद्वितीय पूर्णांक में कनवर्ट करने का सबसे प्रभावी तरीका क्या है?32-char md5 स्ट्रिंग को पूर्णांक
उत्तर
चूंकि समाधान भाषा निर्दिष्ट नहीं की गई थी, इसलिए इस उदाहरण के लिए पायथन का उपयोग किया जाता है।
import os
import hashlib
array = os.urandom(1 << 20)
md5 = hashlib.md5()
md5.update(array)
digest = md5.hexdigest()
number = int(digest, 16)
print(number % YOUR_NUMBER)
एक एमडी 5 128 बिट जानकारी है। एक अजगर int आमतौर पर जानकारी के 32 या 64 बिट्स होने जा रहा है, इसलिए एक int में कनवर्ट करना डेटा को फेंकने जा रहा है, है ना? मुझे लगता है कि आपको लंबे समय तक उपयोग करने की ज़रूरत है। – elhefe
बह, कभी भी ध्यान न रखें, int() यदि आवश्यक हो तो एक लंबा लौटाएगा। – elhefe
आप इसे आधार 16 में क्यों परिवर्तित करते हैं? क्या यह सम्मेलन है? – Nate
एक 64 बिट पूर्णांक में फिट होने की तुलना में एमडी 5 में अधिक डेटा है, इसलिए एक अद्वितीय पूर्णांक प्राप्त करने के लिए कोई तरीका नहीं है (बिना प्लेटफ़ॉर्म का उपयोग किए जा रहे हैं)। आप हेक्स संस्करण को डेटा के कई पूर्णांक के रूप में परिवर्तित करके कुछ अतिरिक्त अनूठा प्राप्त कर सकते हैं, फिर उन्हें जोड़कर (अतिरिक्त या गुणा)। आप इसके बारे में कितना सटीक होंगे इस पर निर्भर करता है कि आप किस भाषा का उपयोग कर रहे हैं।
भाषा की इच्छा के बहुत से unpack
या sscanf
फ़ंक्शन को लागू करने के लिए लागू होते हैं, जो दिखने के लिए अच्छी जगहें हैं।
आप मानते हैं कि "पूर्णांक" 64 बिट्स तक सीमित है। BigInteger के बारे में क्या? –
बेशक, लेकिन प्लेटफॉर्म के बहुत से मनमाना लंबाई पूर्णांक नहीं हैं। अगर (मूल) BigInteger कार्यान्वयन है तो पूरी तरह से निर्भर करता है कि आप किस प्लेटफॉर्म पर हैं। –
बिल्कुल, लेकिन "यह आपके प्लेटफॉर्म पर निर्भर करता है" जैसा कोई नहीं है ":) –
आपने यह नहीं कहा है कि आप किस प्लेटफॉर्म पर चल रहे हैं, या इस हैश का प्रारूप क्या है। संभवतः यह हेक्स है, इसलिए आपके पास 16 बाइट जानकारी है।
इसे अद्वितीय पूर्णांक में बदलने के लिए, आपको मूल रूप से 16-बाइट (128-बिट) पूर्णांक प्रकार की आवश्यकता होती है। कई प्लेटफार्मों में ऐसे प्रकार का मूल रूप से उपलब्ध नहीं है, लेकिन आप जावा या .NET 4.0 में 0 #मानों या सी # या जावा में BigInteger
का उपयोग कर सकते हैं।
संकल्पनात्मक रूप से आपको हेक्स स्ट्रिंग को बाइट्स पर पार्स करने की आवश्यकता है, और फिर बाइट्स को एक पूर्णांक (या दो) में परिवर्तित करें। ऐसा करने का सबसे प्रभावी तरीका पूरी तरह से निर्भर करेगा कि आप किस प्लेटफ़ॉर्म का उपयोग कर रहे हैं।
धन्यवाद। यह php में कैसे किया जा सकता है? – ensnare
आप PHP में sscanf को देख रहे होंगे: http://au.php.net/manual/en/function.sscanf.php –
सिवाय इसके कि sscanf '% x' प्रारूप जैसा प्रतीत नहीं होता है, जब तक कि यह सिर्फ मैं ... –
आपको अपने स्वयं के हैश फ़ंक्शन को परिभाषित करने की आवश्यकता होगी जो किसी MD5 स्ट्रिंग को वांछित चौड़ाई के पूर्णांक में परिवर्तित कर दे। यदि आप एक सादा स्ट्रिंग के रूप में MD5 हैश की व्याख्या करना चाहते हैं, तो आप FNV एल्गोरिदम का प्रयास कर सकते हैं। यह बहुत तेज़ और काफी समान रूप से वितरित है।
यदि आपको केवल मॉड्यूलस की आवश्यकता है, तो आपको इसे 128-बाइट पूर्णांक में परिवर्तित करने की आवश्यकता नहीं है। आप इस तरह से बाइट द्वारा अंक या बाइट द्वारा अंक प्राप्त कर सकते हैं।
mod=0
for(i=0;i<32;i++)
{
digit=md5[i]; //I presume you can convert chart to digit yourself.
mod=(mod*16+digit) % divider;
}
- 1. स्ट्रिंग से MD5 हैश
- 2. php हैश फॉर्म स्ट्रिंग को पूर्णांक
- 3. बाइनरी स्ट्रिंग को पूर्णांक
- 4. पूर्ण एंडियन स्ट्रिंग को पूर्णांक
- 5. स्ट्रिंग :: पूर्णांक
- 6. md5
- 7. एक md5 हैश बाइट सरणी को एक स्ट्रिंग
- 8. स्ट्रिंग को पूर्णांक टेम्पलेट में पूर्णांक में कैसे परिवर्तित करें?
- 9. माइग्रेशन: पूर्णांक से स्ट्रिंग
- 10. सी ++ पूर्णांक स्ट्रिंग रूपांतरण
- 11. स्ट्रिंग को पूर्णांक में कनवर्ट करना
- 12. रूबी - स्ट्रिंग को पूर्णांक में कनवर्ट करें
- 13. RoR - MD5 पीढ़ी
- 14. कैसे स्ट्रिंग कि स्ट्रिंग/पूर्णांक चर
- 15. अजगर md5 तुलना
- 16. विधि openOrCreateDatabase (स्ट्रिंग, पूर्णांक, नल)
- 17. सी # पार्स स्ट्रिंग "0" पूर्णांक
- 18. स्वरूप स्ट्रिंग, पहले शून्य पूर्णांक
- 19. सी स्ट्रिंग और पूर्णांक संयोजन
- 20. स्ट्रिंग में पूर्णांक कनवर्ट करें
- 21. एक पूर्णांक
- 22. सी में स्ट्रिंग का md5 हैश कैसे बनाएं?
- 23. ऑब्जेक्ट डिस्प्ले एक्सेप्शन MD5 ComputeHash
- 24. स्वयं-संदर्भ MD5 फ़ाइल
- 25. एकाधिक फ़ाइलों के MD5 हैश को मिलाएं
- 26. एमएफसी सीएसटींग को पूर्णांक
- 27. PHP md5() अलग आउटपुट देता है तो MySQL md5
- 28. MySQL MD5 और जावा MD5 बराबर नहीं है
- 29. md5 sum + एक्सटेंशन (BASH)
- 30. MySQL MD5 SELECT
क्या आप हैश% x या x% हैश करना चाहते हैं? पहले मामले में आपको जवाब की गणना करने के लिए पूरे हैश की भी आवश्यकता नहीं हो सकती है। – Joren
मैं हैश% X – ensnare
देख रहा हूं क्या इनमें से कोई भी उत्तर उपयोगी है या आपको अभी भी अधिक अंतर्दृष्टि की आवश्यकता है? –