advanced-encryption-standard
The objective of the following assignment is to implement a fully working AES algorithm that can encrypt or decrypt the given input. The AES cipher includes many stages and modules to implement. As assistance, I am going to list the main concepts you need implemented to have a working AES cipher. Note that the AES we are building uses a 16-byte key. ▪ ▪ ▪ ▪ ▪ ▪ ▪ S-Box – you need to implement how the byte substitution works in case of encryption and decryption. You will be given a file containing the tables needed. Row Shifting – Simple row rotations according to the AES rules. Mix Columns – This is the tricky part. This matrix multiplication in this operation is done in the field GF(2 8 ) which means that all arithmetic operations are different. So, for this part, you will first need to implement both addition which is XORing and multiplication which is a series of Shifting and XORing operations. (Look it up in your courseware) Add Round Key – Simple XORing between the state and the round key. Key Expansion – Follow the procedure for generating the 44 words required for the 11 keys (first key and one key for each round). AES Function – finally, you will implement the AES function itself where the magic happens. Later, you will implement the 10-round functionality. After finishing your AES encryption algorithm, tweak it so that it does decryption instead of encryption. Hint: Use the reversible technique. That is implement decryption in the same manner as encryption