2012-09-25 16 views
10

Ich möchte MD5-Kontext serialisieren/deserialisieren. Aber ich weiß nicht, wie man es in Python macht. Pseudocode von dem, was ich tun möchte.MD5-Berechnungsstatus serialisieren und später fortsetzen?

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

Dafür gibt es C++ - Bibliotheken. Gibt es einen für Python? Warum unterstützt die MD5-Bibliothek das nicht? Gibt es Sicherheitsbedenken? Vielen Dank.

Bearbeitet: Ich möchte dies tun, weil zum Beispiel ein HTTP-Server Streaming-Daten in verschiedenen HTTP-Anfragen akzeptieren will. Es wäre praktisch, den md5-Kontext irgendwie zwischen Anfragen zu serialisieren.

+0

Warum möchten Sie das tun? –

+3

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

+0

Danke. Die Pypy-Bibliothek sagt, benutze sie nicht, weil sie nicht getestet wurde = (Warum implementiert der offizielle Python md5 das nicht? – Yey

Antwort

1

ich Herrn Guido V Rossum gefragt. Er antwortete: "Ich glaube nicht, dass es einen Weg gibt. Allerdings könnte es eine anständige Feature-Anfrage machen. Du könntest eine an bugs.python.org einreichen." So tat ich.

http://bugs.python.org/issue16059

0

HASH-Objekte sind nicht serialisierbar: How to serialize hash objects in Python

Angenommen, Sie rund um die ungehashte Daten passieren kann:

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") 
Verwandte Themen