SubBytes applies the AES S-box to every byte. The displayed state is recomputed from the input grid.

highlighted = computed this step

Why bytes are substituted

SubBytes replaces each byte through the standard AES S-box. The grid is recomputed cell by cell from the previous state.

S-box each byte\text{S-box each byte}
SubBytesAES state bytes shown as a column-major grid.SubBytes - subbytesrowc0c1c2c3r00xd40xe00xb80x1er10x270xbf0xb40x41r20x110x980x5d0x52r30xae0xf10xe50x30

Read the SubBytes state

The recomputed state is 0xd42711aee0bf98f1b8b45de51e415230.

0xd42711aee0bf98f1b8b45de51e4152300xd42711aee0bf98f1b8b45de51e415230
SubBytesAES state bytes shown as a column-major grid.SubBytes - subbytesrowc0c1c2c3r00xd40xe00xb80x1er10x270xbf0xb40x41r20x110x980x5d0x52r30xae0xf10xe50x30

Why this is nonlinear

The S-box is the nonlinear step in the round. Here it is only shown as exact byte substitution, not as a derivation of the S-box.

nonlinear byte substitution\text{nonlinear byte substitution}
SubBytesAES state bytes shown as a column-major grid.SubBytes - subbytesrowc0c1c2c3r00xd40xe00xb80x1er10x270xbf0xb40x41r20x110x980x5d0x52r30xae0xf10xe50x30

Summary

SubBytes maps the starting grid to the pinned S-box output. NOTE: no-padding; no-side-channel; no-production; never-roll-your-own. Exact byte transforms of ONE AES round over GF(2^8); real AES with 128 runs 10 rounds with a key schedule inside a reviewed mode such as CBC or GCM.

SubBytes recomputed\text{SubBytes recomputed}
SubBytesAES state bytes shown as a column-major grid.SubBytes - subbytesrowc0c1c2c3r00xd40xe00xb80x1er10x270xbf0xb40x41r20x110x980x5d0x52r30xae0xf10xe50x30