Skip to content

Decryption

Michael Mattioli edited this page Feb 24, 2020 · 2 revisions

Since AES-128 uses 10 rounds to encrypt plain text, it uses the same 10 rounds to decrypt cipher text; it also uses the same "pre round" to perform a single AddRoundKey operation. Decryption is simply the inverse of encryption and so all of the operations performed during rounds of decryption are the inverse of the operations that were performed during encryption (where applicable). At a very high level, the entire decryption process can be described as follows:

  • Round 10 performs the following three operations on the state (in order):
    1. AddRoundKey
    2. InverseShiftRows
    3. InverseSubBytes
  • Rounds 9 through 1 perform the same operations on the state as round 10 with the addition of MixColumns (in order):
    1. AddRoundKey
    2. InverseMixColumns
    3. InverseShiftRows
    4. InverseSubBytes
  • Round 0 simply performs AddRoundKey on the state.

The state after performing the AddRoundKey operation in round 0 is the plain text. The following table aims to graphically demonstrate the entire decryption process.

Round Operation
10 AddRoundKey ⬇️
10 InverseShiftRows ⬇️
10 InverseSubBytes ⬇️
9 - 1 AddRoundKey ⬇️
9 - 1 InverseMixColumns ⬇️
9 - 1 InverseShiftRows ⬇️
9 - 1 InverseSubBytes ⬇️
0 AddRoundKey 🔚
Clone this wiki locally