2010-04-24 15 views
13

मैं एक नहीं बल्कि अजीब समस्या मिल गया है। एक वितरित हैश तालिका के लिए मैं MD5 हैश पर कुछ सरल गणित संचालन करने में सक्षम होने की जरूरत है। इनमें एक योग (हैश द्वारा प्रतिनिधित्व संख्यात्मक राशि) और एक मॉड्यूलो ऑपरेशन शामिल है। अब मैं सोच रहा हूं कि इन परिचालनों को लागू करने का सबसे अच्छा तरीका क्या है। मैं hashlib उपयोग कर रहा हूँ हैश की गणना करने के लिए, लेकिन के बाद से हैश मैं तो स्ट्रिंग कर रहे हैं, मैं उनके साथ गणना कैसे करते हैं?संचालन हैश

उत्तर

23

आप हेक्साडेसिमल अंक प्राप्त करने के लिए hexdigest() विधि का उपयोग कर सकते हैं, और फिर उन्हें एक नंबर में कन्वर्ट:

>>> h = hashlib.md5('data') 
>>> int(h.hexdigest(), 16) 
188041611063492600696317361555123480284L 

आप पहले से ही digest() के उत्पादन में है, तो आप यह हेक्साडेसिमल अंक को परिवर्तित कर सकते हैं:

>>> hexDig = ''.join('%02x' % ord(x) for x in h.digest()) 
>>> int(hexDig, 16) 
188041611063492600696317361555123480284L 

संपादित:

दूसरे मामले के लिए, यह वास्तविक है .encode('hex') या binascii.hexlify:

>>> int(h.digest().encode('hex'), 16) 
188041611063492600696317361555123480284L 
>>> int(binascii.hexlify(h.digest()), 16) 
188041611063492600696317361555123480284L 
का उपयोग करके कनवर्ट करना आसान है
संबंधित मुद्दे