2012-09-25 16 views
10

मैं md5 संदर्भ को क्रमबद्ध/deserialize करना चाहता हूँ। लेकिन मुझे नहीं पता कि पायथन में इसे कैसे किया जाए। मैं जो करना चाहता हूं उसका छद्म कोड।MD5 गणना-राज्य Serialize और बाद में फिर से शुरू?

import md5 
# Start hash generation 
m = md5.new() 
m.update("Content") 

# Serialize m 
serialized_m = serialize(m) 

# In another function/machine, deserialize m 
# and continue hash generation 
m2 = deserialize(serialized_m) 
m2.update("More content") 
m2.digest()  

इसके लिए सी ++ पुस्तकालय हैं। क्या पाइथन के लिए कोई है? एमडी 5 पुस्तकालय इसका समर्थन क्यों नहीं करता है? क्या सुरक्षा चिंताएं हैं? धन्यवाद।

संपादित: मैं ऐसा करना चाहता हूं क्योंकि उदाहरण के लिए, एक HTTP सर्वर विभिन्न HTTP अनुरोधों में स्ट्रीमिंग डेटा स्वीकार करना चाहता है। किसी भी तरह अनुरोधों के बीच एमडी 5 संदर्भ को क्रमबद्ध करना सुविधाजनक होगा।

+0

आप ऐसा क्यों करना चाहते हैं? –

+3

http://stackoverflow.com/questions/5865824/hash-algorithm-for- गतिशील- बढ़ते- स्ट्रीमिंग- डेटा – Kevin

+0

धन्यवाद। पाइप लाइब्रेरी का कहना है कि इसका उपयोग नहीं किया जाता है, यह परीक्षण नहीं किया जाता है = (आधिकारिक पायथन एमडी 5 क्यों लागू नहीं करता है? – Yey

उत्तर

1

मैं श्री गुइडो वी Rossum पूछा। उन्होंने जवाब दिया कि "मुझे नहीं लगता कि एक रास्ता है। हालांकि यह एक सभ्य फीचर अनुरोध कर सकता है। आप एक को bugs.python.org पर सबमिट कर सकते हैं।" तो मैंने किया।

http://bugs.python.org/issue16059

0

HASH वस्तुओं serializable नहीं हैं: How to serialize hash objects in Python

मान लिया जाये कि आप unhashed डेटा के आसपास पारित कर सकते हैं:

from Crypto.Hash import MD5 

# generate hash 
m = MD5.new() 
s = "foo" 
m.update(s) 

# serialize m 
serialized = s 

# deserialize and continue hash generation 
m2 = MD5.new(serialized) 
if m2.hexdigest() == m.hexdigest(): 
    print "success" 
m2.update("bar") 
संबंधित मुद्दे