2012-09-25 6 views
10

md5コンテキストをシリアライズ/デシリアライズします。しかし、私はPythonでそれを行う方法を知らない。 私がしたいことの擬似コード。MD5の計算状態をシリアル化して後で再開しますか?

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()  

これにはC++ライブラリがあります。 Pythonのためのものはありますか?なぜmd5ライブラリはそれをサポートしていないのですか?セキュリティ上の懸念はありますか?ありがとう。

編集: たとえば、HTTPサーバーがさまざまなHTTP要求でストリーミングデータを受け入れる必要があるためです。何らかの形で要求間でmd5コンテキストを直列化すると便利です。

+0

なぜそれをしたいですか? –

+3

http://stackoverflow.com/questions/5865824/hash-algorithm-for-dynamic-growing-streaming-data – Kevin

+0

ありがとうございました。 pypyライブラリは、テストされていないものを使用していないと言っています。(なぜ、公式のpython md5は、このthoを実装していませんか? – Yey

答えて

1

私は氏グイドV Rossum氏に尋ねました。彼は「私には方法はないと思うが、それはまともな機能要求をするかもしれないが、あなたはbugs.python.orgにそれを提出できるだろう」と答えた。だから私はやった。

http://bugs.python.org/issue16059

0

HASHオブジェクトが直列化可能ではありません:あなたはハッシュ解除済みデータの周りに渡すことができると仮定すると、How to serialize hash objects in Python

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") 
関連する問題