Wi-Crypt#

Wi-Crypt is a C++ 17 library that allows for quick AES 128/192/256 encryption & decryption. This project was configured to work on a Linux operating system, but it can be easily tweaked to work on any other machine.

The tool is very modular, meaning it was designed from the ground up to accept new encryption and decryption schemes with ease.

🔮  Future plans

In the (probably distant) future, I plan to rewrite Wi-Crypt in Rust! Not only that, but I plan to include an implementation for the SHA2 and SHA3 algorithms.

Why build AES from scratch?#

I wanted a pure C++ implementation of the AES algorithm (including its many modes, such as ECB, CBC, CFB etc.) and I couldn't find one - so I built it myself.

The project had to be fast, hackable and written in modern C++ (C++ 17). I am quite happy with the final result.

Wi-Crypt also provided a great learning experience, since it helped me better understand how the AES encryption works behind the scenes.

Features#

Some of the key features that make this project impressive include:

  • Support for 128/192/256-bit AES encryption (decryption);

  • Multiple AES modes, including ECB, CBC, CFB, OFB and CTR encryption (decryption);

  • The \(\text{GF}(2^8)\) precomputation is available in the source code instead of meaningless lookup tables, making for a great learning experience;

  • Tests against other known implementations, such as dhuertas' and SergeyBel's in order to verify correctness;

  • Advanced logging capabilities;

  • Great code modularization;

  • Availability under an open-source license (see bellow).

Source code#

For more info, please check out the code repository. The code is made available for free under the MIT license.

I value keeping my code open‑source. However, it's disheartening whenever I find that someone has copied my work without giving me proper credit. All I ask of you is to not claim my effort as your own.