-
Notifications
You must be signed in to change notification settings - Fork 2
Home
AES-128 uses a 128-bit secret key, 128-bit plain text, and 128-bit cipher text. Since we are working with 128-bit data, we can represent 128 bits as 16 bytes. Those 16 bytes can be visually represented using a 4x4 grid as shown here (where a
is the input data).
a0,0 |
a0,1 |
a0,2 |
a0,3 |
a1,0 |
a1,1 |
a1,2 |
a1,3 |
a2,0 |
a2,1 |
a2,2 |
a2,3 |
a3,0 |
a3,1 |
a3,2 |
a3,3 |
This is also sometimes represented as b0
...b16
(representing each of the 16 bytes) arranged as such.
b0 |
b4 |
b8 |
b12 |
b1 |
b5 |
b9 |
b13 |
b2 |
b6 |
b10 |
b14 |
b3 |
b7 |
b11 |
b15 |
Throughout the documentation and the commented designs, the aforementioned representation is used when explaining how operations are performed and data is manipulated.
All of the operations have been documented in this wiki. All synthesizable designs have been commented throughout to help correlate with the documentation on this wiki and help with overall understanding.
Testbenches have been written for all of the operations. Test vectors have been sourced from a variety of places: