python 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 ответ

  1. При шифровании файла его содержимое выполняется по алгоритму и изменяется. Если ваш файл JPEG, его заголовки также изменяются, в результате чего он выглядит как поврежден, если вы пытаетесь открыть его с помощью средства просмотра файлов.

    Однако то, что происходит за кулисами, это то, что они только что были преобразованы изX, скажем Yтак . Для того, чтобы вернуть его и ваш просмотрщик изображений легко открыть его, вам нужно будет запустить файл тщательный алгоритм расшифровки с помощью соответствующих ключей. Таким образом, ваш Yтип будет преобразован обратно точно в Xтип, и вы сможете прочитать его.