序列化后文件大小显著增加

4 投票
1 回答
1864 浏览
提问于 2025-04-15 15:38

我正在读取一个文件,并把数据(加密后)发送到一个字典里,同时记录加密前后的数据哈希值。然后我把这个字典进行序列化,但发现生成的文件大小比原文件大得多。如果我直接把加密的数据写入文件,大小和原文件是一样的。你知道为什么我序列化后的文件会这么大吗?

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

1 个回答

6

试着使用二进制格式来保存数据,可以在调用 pickle.dump 时加上一个参数 protocol=2。这样做会更有效率。

撰写回答