AES по определению использует как минимум 128-битный ключ. Таким образом, используя AES, вы уже используете как минимум 128-битное шифрование.
do c для AES.new указывает, что аргумент ключа используется как есть (то есть Передав 16-битный / 128-битный ключ, вы получите AES-128, 24 байта - AES-192, а 32 байта - AES-256), за исключением MODE_SIV, где вам нужно передать удвоенную длину.
На самом деле вы передаете дайджест SHA256 и используете MODE_CB C. Это означает, что вы уже передаете 256-битный ключ и получаете шифрование AES-256.
Однако do c также дает пример для использования AES
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
key = get_random_bytes(16)
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(data)
file_out = open("encrypted.bin", "wb")
[ file_out.write(x) for x in (cipher.nonce, tag, ciphertext) ]
Как видите, уже есть метод encrypt_and_digest, вам не нужно копировать свой код (с потенциальной ошибкой). Кроме того, ключ вместо этого генерируется из get_random_bytes. Использование одного вызова SHA256 может быть лучше, чем ничего, но гораздо лучше просто генерировать ключ случайным образом и надежно хранить его. Если вам действительно нужно, есть пара функций получения ключа , если вам нужно разрешить пользователю вводить свой пароль.