python Pycrypto如何加密文件而不是破坏它们

时间:2016-12-29 01:22:54

标签: python encryption pycrypto

我一直在处理这个问题很长一段时间了。

当我尝试使用PyCrypto加密文件时。我可以加密和解密它(目前只适用于图像)。问题是,当我加密图像并尝试打开它时,图像会被破坏。如何修复它以便我仍然可以运行程序或在图像被加密后查看图像?

以下是加密代码:

from Crypto.Cipher import AES
from Crypto.Hash import SHA256
from Crypto import Random
import os

def Encryption(Key, filename):
    chunksize = 64*1024
    outputFile = "[CryptoReady]"+filename
    filesize = str(os.path.getsize(filename)).zfill(16)
    IV = Random.new().read(16)

encryptor = AES.new(Key, AES.MODE_CBC, IV)

with open(filename, 'rb') as infile:
    with open(outputFile, 'wb') as outfile:
        outfile.write(filesize.encode('utf-8'))
        outfile.write(IV)

        while True:
            chunk = infile.read(chunksize)

            if len(chunk) == 0:
                break
            elif len(chunk) % 16 != 0:
                chunk += b'}' * (16 - (len(chunk) % 16))

            outfile.write(encryptor.encrypt(chunk))

1 个答案:

答案 0 :(得分:0)

加密文件时,其内容通过算法运行,内容也会更改。如果您的文件是JPEG,其标题也会更改,如果您尝试使用文件查看器打开它,则会使其看起来像损坏。

然而,幕后发生的事情是他们刚刚从X改为让我们说Y。要将其恢复并让您的图像查看器轻松打开它,您需要使用适当的密钥通过解密算法运行该文件。这样,您的Y类型将完全转换回X类型,您就可以阅读它了。