import os, random, struct from Crypto.Cipher import AES def encrypt_file(key, in_filename, out_filename=None, chunksize=64*1024): """ Шифрует файл используя AES (режим CBC) с заданным ключом. key: Ключ шифрования - строка длиной 16, 24 или 32 байта. Более длинные ключи более безопасны. in_filename: Имя входного файла out_filename: Если None, будет использоваться « .enc». chunksize: Устанавливает размер фрагмента, который функция использует для чтения и шифрования файла.Большие размеры могут быть быстрее для некоторых файлов и машин. кусок (chunk) должен делиться на 16. """ if not out_filename: out_filename = in_filename + '.enc' iv = ''.join(chr(random.randint(0, 0xFF)) for i in range(16)) iv = iv.encode('utf8')[0:16] encryptor = AES.new(key, AES.MODE_CBC, iv) filesize = os.path.getsize(in_filename) with open(in_filename, 'rb') as infile: with open(out_filename, 'wb') as outfile: outfile.write(struct.pack('