AES-128 Encryption Tool
# Introduction
This tool is a lightweight AES-128 encryption and decryption utility that allows users to securely encrypt and decrypt data using a 16-byte (128-bit) plaintext input and a 16-byte encryption key. It provides a structured interface where users can input their plaintext and key, and then apply the AES-128 algorithm to generate a ciphertext.
The tool also supports decryption, enabling users to retrieve the original plaintext by inputting the corresponding ciphertext and key.

# Implementation
This project provides a comprehensive implementation of the AES-128 encryption and decryption algorithm from scratch, developed in the C programming language. The implementation includes key AES operations such as SubBytes, ShiftRows, MixColumns, AddRoundKey, and Key Expansion. The project adheres to the NIST standard (FIPS 197), with specific reference to Appendix B (Cipher Example) on pages 33-34.
Rigorous unit testing and integrated testing have been conducted to validate the correctness and reliability of the implementation. The tests are performed using both C and Python implementations, ensuring consistency between the two. Additionally, Continuous Integration (CI) is employed to automate the testing and build processes, ensuring ongoing functionality and stability.This project offers a fully functional AES-128 solution, thoroughly tested and validated for real-world application.
