AES-256 e HMAC

Este é um lembrete sobre como aplicar HMAC sobre os dados criptografados AES para integridade:

ciphertext = iv + aes(key, iv, plaintext)
tag
= hmac(hmac_key, ciphertext, sha256)

Os comprimentos das chaves também são importantes:

key = os.urandom(256/8)  # AES-256 key size
iv
= os.urandom(128/8) # AES block size
hmac_key
= os.urandom(512/8) # SHA-256 block size

Comentários são bem vindos.