# 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:

- Import the necessary modules:

```
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import get_random_bytes
```

- Generate a random 256-bit key:

```
key = get_random_bytes(32)
```

- Create an AES cipher object with CBC mode:

```
cipher = AES.new(key, AES.MODE_CBC)
```

- Pad the plaintext to a multiple of 16 bytes:

```
plaintext = b'This is the plaintext message'
padded_plaintext = pad(plaintext, AES.block_size)
```

- Encrypt the padded plaintext:

```
ciphertext = cipher.encrypt(padded_plaintext)
```

- To decrypt the ciphertext, create a new AES cipher object with the same key and IV (Initialization Vector):

```
decipher = AES.new(key, AES.MODE_CBC, cipher.iv)
```

- 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.