AES es un cifrado simétrico moderno. Para hacerlo bien necesitas:
- Clave (16/24/32 bytes).
- IV aleatorio (en CBC).
- Padding si el mensaje no es múltiplo del bloque (16 bytes).
1) Instalar librería
pip install pycryptodome
2) Ejemplo (texto)
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
def pkcs7_pad(data, block=16):
pad = block - (len(data) % block)
return data + bytes([pad]) * pad
def pkcs7_unpad(data):
pad = data[-1]
return data[:-pad]
key = get_random_bytes(32) # AES-256
iv = get_random_bytes(16)
plain = "Mensaje secreto".encode("utf-8")
cipher = AES.new(key, AES.MODE_CBC, iv=iv)
enc = cipher.encrypt(pkcs7_pad(plain))
cipher2 = AES.new(key, AES.MODE_CBC, iv=iv)
dec = pkcs7_unpad(cipher2.decrypt(enc))
print(dec.decode("utf-8"))
3) Nota importante
Para archivos reales, además de cifrar, conviene autenticar (por ejemplo con GCM o HMAC) para detectar modificaciones.
