2009-11-03 11 views
3

Je lis dans un fichier et envoie les données (une fois cryptées) à un dictionnaire, avec un hachage des données avant et après le cryptage. Je puis pickle le dictionnaire, mais trouve la taille du fichier est énorme par rapport à la taille du fichier source. Si j'écris les données cryptées directement dans un fichier, la taille est identique à la source. Une idée de pourquoi mon fichier mariné est si grand?la taille du fichier est considérablement augmenté après pickle

#Encrypt data and get hashes   
def encryptAndExportFile(self, key, inFile, outFile): 

    openInFile = open(inFile,"rb") 
    inFileSize = os.path.getsize(inFile) 
    inFileData = openInFile.readlines() 
    openInFile.close() 

    """ initialise cipher """ 

    cipher = AES.new(key, AES.MODE_CFB) 

    """ initialise MD5 """ 

    m = hashlib.md5() #hash 
    h = hashlib.md5() #hash of encrypted dataq 

    encryptedData = [] 

    for data in inFileData: 

     m.update(data) 
     encData = cipher.encrypt(data) 
     h.update(encData) 
     encryptedData.append(encData) 


    hashResult = m.digest() 
    encHashResult = h.digest() 

    return hashResult, encryptedData, encHashResult 

def storeEncryptedObject(self, obj, path): 

    outFile = open(path, 'wb') 
    pickle.dump(obj, outFile) 
    outFile.close() 

Répondre

6

Essayez d'utiliser un cornichon binaire en spécifiant protocol=2 comme argument mot-clé à pickle.dump. Cela devrait être beaucoup plus efficace.

+0

travaillé un régal! THX! – zyrus001