pycryptodome aes 256 cbc

AES 256 CBC Encryption in pycryptodome

To perform AES 256 CBC encryption using the pycryptodome library in Python, you can follow these steps:

  1. Import the necessary modules:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import get_random_bytes
  1. Generate a random 256-bit key:
key = get_random_bytes(32)
  1. Create an AES cipher object with CBC mode:
cipher =, AES.MODE_CBC)
  1. Pad the plaintext to a multiple of 16 bytes:
plaintext = b'This is the plaintext message'
padded_plaintext = pad(plaintext, AES.block_size)
  1. Encrypt the padded plaintext:
ciphertext = cipher.encrypt(padded_plaintext)
  1. To decrypt the ciphertext, create a new AES cipher object with the same key and IV (Initialization Vector):
decipher =, AES.MODE_CBC, cipher.iv)
  1. Decrypt the ciphertext and remove the padding:
decrypted_plaintext = decipher.decrypt(ciphertext)
unpadded_plaintext = decrypted_plaintext.rstrip(pad)

Please note that this is a simplified example and you may need to adapt it to your specific use case. Make sure to handle exceptions and ensure the security of your key and ciphertext.