Skip to content

Pure C implementation of AES-128/192/256 from scratch.

License

Notifications You must be signed in to change notification settings

martian0x80/PureAES

Repository files navigation

PureAES

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.

To implement later

  • 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.

About

Pure C implementation of AES-128/192/256 from scratch.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published