Skip to content

Encryption

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

AES-128 uses 10 rounds of encryption along with a "pre round" (think of it as round 0 with only a single operation) to encrypt the provided plain text. At a very high level, the entire encryption process can be described as follows:

  • Round 0 performs AddRoundKey on the state.
  • Rounds 1 through 9 perform the following operations on the state (in order):
    1. SubBytes
    2. ShiftRows
    3. MixColumns
    4. AddRoundKey
  • Round 10 performs the same operations on the state as rounds 1 through 9 with the exception of MixColumns; MixColumns is omitted from the final round (in order):
    1. SubBytes
    2. ShiftRows
    3. AddRoundKey

The state after performing the AddRoundKey operation in round 10 is the cipher text. The following table aims to graphically demonstrate the entire encryption process.

Round Operation
0 AddRoundKey ⬇️
1 - 9 SubBytes ⬇️
1 - 9 ShiftRows ⬇️
1 - 9 MixColumns ⬇️
1 - 9 AddRoundKey ⬇️
10 SubBytes ⬇️
10 ShiftRows ⬇️
10 AddRoundKey 🔚
Clone this wiki locally