The goal for this project is to implement the Advanced Encryption Standard (a special case of Rijndael Cipher) for
128/192/256 bit key sizes in Pure C. Why Pure C? Because it's fast, portable and fun! (Well, maybe not fun for everyone,
but definitely for me). This project is also my first cryptography project, so please don't judge me too harshly if I
mess up something. I followed the specifications
from FIPS 197 and used some test vectors
from NIST. I also
followed through some Abstract Number Theory, Abstract Algebra for the intuition behind working in the Galois Field or
just Fields in general. The code is not optimized for speed or security, but rather for readability and simplicity. I
hope you find it useful (probably not) and feel free to give me feedback or suggestions.
- Implement major block cipher mode of operations.
- Utilize the Intel's AES-NI (AES New Instructions) to efficiency and protection from side channel attacks. Either employing the instrinsics or inline-assembly provided in GCC (GNU C Compiler) for the x86_x64 arch instruction set.
I hope to complete this before the end start of my semester.