Original Implementation - 2024.2 English

Vitis Libraries

Release Date
2024-11-29
Version
2024.2 English

Similarly, AES decryption consists of five parts: KeyExpansion, Inverse SubBytes, Inverse ShiftRows, Inverse MixColumns, and AddRoundKey.

KeyExpansion also generates 11/13/15 round keys from input cipher key and they maps to 2-D array as states do.

For one input cipher block, AES-128/192/256 decryption performs 10/12/14 round of processing with the former round keys from behind, each at a time. Thus, input cipher data blocks operate XOR with the last roundkey. After that, every round sequentially goes through AddRoundKey, Inverse MixColumns, Inverse ShiftRows, and Inverse SubBytes. Meanwhile, Inverse MixColumns are bypassed at the first round.

original flow of AES-256 decryption

Like AES encryption, Inverse SubBytes are transformed into looking up table, which is called inverse S-box and is different with that in encryption. Details can be found in the chapter of AES encryption.

During Inverse ShiftRows, right circular shift are operated based on each row number in 2-D state array.

In Inverse MixColumns step, matrix multiplication is involved to transform each column of states. Transform matrix is fixed and calculation treats each bytes as polynomials with coefficients in GF(2^8), modulo x^4 + 1.

inverse mixcolumns operation

In AddRoundKey step, states in each column operate XOR with roundkey of this round.