Как зашифровать / расшифровать большие файлы с помощью модуля AES CB C в python? - PullRequest
0 голосов
/ 30 мая 2020

Я пишу функцию шифрования / дешифрования с использованием режима CB C в python с заданным ключом из файла. Когда я пытаюсь расшифровать большой файл, я получаю следующую ошибку:

ValueError: Неверное заполнение.

Не знаю, что я делаю не так. Я подозреваю, что эта ошибка возникла из-за «буфера», который я добавил, но я не знаю, как я могу сделать это по-другому

Созданная мной функция выглядит следующим образом:

def encrypt_decrypt(file_location, encry_decry , key, encrypt=True, buffer_size=65536):

input_file = open(file_location, 'rb')

output_file = open(encry_decry, 'wb')


if encrypt:
   #Encrypt

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


    output_file.write(cipher.iv)

    buffer = input_file.read(buffer_size)

    while len(buffer)>0:

        ciphered_data = cipher.encrypt(pad(buffer,AES.block_size))
        print(cipher.iv)
        output_file.write(ciphered_data)
        buffer = input_file.read(buffer_size)


else:

   #Decrypt

    iv = input_file.read(16)

    #creamos un objeto cipher

    cipher = AES.new(key, AES.MODE_CBC, iv=iv)

    buffer = input_file.read(buffer_size)

    while len(buffer)>0:
        decrypted_data = cipher.decrypt(buffer), AES.block_size
        output_file.write(decrypted_data)
        buffer = input_file.read(buffer_size)


input_file.close()
output_file.close() 
...