Advanced Encryption Standard (AES) (original) (raw)

Last Updated : 8 Aug, 2025

Advanced Encryption Standard (AES) is a highly trusted **encryption algorithm used to secure data by converting it into an unreadable format without the proper key. It is developed by the National Institute of Standards and Technology (NIST) in 2001. It is is widely used today as it is much stronger than DES and triple DES despite being harder to implement. **AES encryption uses various **key lengths (128, 192, or 256 bits) to provide strong protection against unauthorized access. This **data security measure is efficient and widely implemented in securing **internet communication, protecting **sensitive data, and encrypting files. AES, a cornerstone of modern cryptography, is recognized globally for its ability to keep information safe from cyber threats.

That means it takes 128 bits as input and outputs 128 bits of encrypted cipher text. AES relies on the substitution-permutation network principle, which is performed using a series of linked operations that involve replacing and shuffling the input data.

**Working of The Cipher

AES performs operations on bytes of data rather than in bits. Since the block size is 128 bits, the cipher processes 128 bits (or 16 bytes) of the input data at a time.

The number of rounds depends on the key length as follows :

N (Number of Rounds) Key Size (in bits)
10 128
12 192
14 256

**Creation of Round Keys

A Key Schedule algorithm calculates all the round keys from the key. So the initial key is used to create many different round keys which will be used in the corresponding round of the encryption.

Creation of Round Keys (AES)

Creation of Round Keys (AES)

**Encryption

AES considers each block as a 16-byte (4 byte x 4 byte = 128 ) grid in a column-major arrangement.

**[ b0 | b4 | b8 | b12 |
****| b1 | b5 | b9 | b13 |**
****| b2 | b6 | b10| b14 |**
****| b3 | b7 | b11| b15 ]**

aes

AES

**Each round comprises of 4 steps :

**Step1. Sub Bytes

This step implements the substitution.

In this step, each byte is substituted by another byte. It is performed using a lookup table also called the S-box. This substitution is done in a way that a byte is never substituted by itself and also not substituted by another byte which is a compliment of the current byte. The result of this step is a 16-byte (4 x 4 ) matrix like before.

The next two steps implement the permutation.

**Step2. Shift Rows

This step is just as it sounds. Each row is shifted a particular number of times.

(A left circular shift is performed.)

**[ b0 | b1 | b2 | b3 ] [ b0 | b1 | b2 | b3 ]
****| b4 | b5 | b6 | b7 | -> | b5 | b6 | b7 | b4 |**
****| b8 | b9 | b10 | b11 | | b10 | b11 | b8 | b9 |**
**[ b12 | b13 | b14 | b15 ] [ b15 | b12 | b13 | b14 ]

**Step 3: Mix Columns

This step is a matrix multiplication. Each column is multiplied with a specific matrix and thus the position of each byte in the column is changed as a result.

**This step is skipped in the last round.

**[ c0 ] [ 2 3 1 1 ] [ b0 ]
****| c1 | = | 1 2 3 1 | | b1 |**
****| c2 | | 1 1 2 3 | | b2 |**
**[ c3 ] [ 3 1 1 2 ] [ b3 ]

**Step 4: Add Round Keys

**Decryption

The stages in the rounds can be easily undone as these stages have an opposite to it which when performed reverts the changes. Each 128 blocks goes through the 10,12 or 14 rounds depending on the key size.

The stages of each round of decryption are as follows :

The decryption process is the encryption process done in reverse so I will explain the steps with notable differences.

**Inverse MixColumns

constant matrix

**[b0] = [ 14 11 13 9] [ c0 ]
**[b1]=[ 9 14 11 13 ] [ c1 ]
**[b2] =[ 13 9 14 11] [ c2 ]
**[ b3 ]=[ 11 13 9 14 ] [ c3 ]

**Inverse SubBytes

**Applications of AES

AES is widely used in many applications which require secure data storage and transmission. Some common use cases include: