We support CBC-DES, CBC-AES128, CBC-AES192, and CBC-AES256 modes in this implementation.
Attention
The bit-width of the interfaces we provide is shown as follows:
plaintext | ciphertext | cipherkey | IV | |
CBC-DES | 64 | 64 | 64 | 64 |
CBC-AES128 | 128 | 128 | 128 | 128 |
CBC-AES192 | 128 | 128 | 192 | 128 |
CBC-AES256 | 128 | 128 | 256 | 128 |
The algorithm flow chart is shown as follow:
As we can see from the chart, the encryption part of CBC mode has loop-carried dependency which is enforced by the algorithm, then the input block of each iteration (except for iteration 0) needs a feedback data from its last iteration. Thus, the initiation interval (II) of CBC encryption cannot achieve an II = 1. However, the decryption part of CBC mode has no dependencies, so that it can achieve an II = 1.