← Projects

AES — Step By Step

A step-by-step visualization of AES-128, printing the intermediate state after every SubBytes, ShiftRows, MixColumns, and AddRoundKey operation — built so students (including past me) can actually verify their by-hand calculations instead of just trusting them.

Overview

Anyone who’s had to manually trace an AES round for a cryptography course knows the feeling: you get an answer, but you have no way to check whether it’s right until the assignment’s already graded. This notebook exists to kill that uncertainty — it runs AES-128 encryption and prints the full intermediate state after every single operation, so you can check your own by-hand math against the real thing at every round, not just the final ciphertext.

Highlights

  • Every operation, not just the rounds — SubBytes, ShiftRows, MixColumns, and AddRoundKey each print their own output, so a mistake is traceable to the exact step it happened at.
  • Readability over cleverness — deliberately un-optimized, because the point is following along, not performance.
  • Built from actually needing it — this came out of hitting exactly this wall in coursework and wanting a way to double-check calculations by hand.

Stack

Python + SageMath, in a Jupyter notebook — no framework, no dependencies beyond what a standard SageMath environment already provides.