Я пишу функцию шифрования / дешифрования с использованием режима 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()