我一直在处理这个问题很长一段时间了。
当我尝试使用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))
答案 0 :(得分:0)
加密文件时,其内容通过算法运行,内容也会更改。如果您的文件是JPEG,其标题也会更改,如果您尝试使用文件查看器打开它,则会使其看起来像损坏。
然而,幕后发生的事情是他们刚刚从X
改为让我们说Y
。要将其恢复并让您的图像查看器轻松打开它,您需要使用适当的密钥通过解密算法运行该文件。这样,您的Y
类型将完全转换回X
类型,您就可以阅读它了。