Shaina
The Advanced Encryption Standard (AES) is a symmetric block cipher used worldwide for secure data encryption. It operates on 128-bit blocks with key sizes of 128, 192, or 256 bits.
- SubBytes β Byte substitution using an S-Box
- ShiftRows β Cyclically shift rows in the state
- MixColumns β Mix data within each column using matrix multiplication
- AddRoundKey β XOR the state with a round-specific key
This project demonstrates a simplified AES-128 encryption/decryption algorithm in Java, using:
- A reduced S-Box (16 entries for learning simplicity)
- Basic MixColumns and Galois Field logic
- Full key expansion for 10 rounds
- 128-bit block and key size
- 10 Rounds of encryption and decryption
- Custom simplified:
- S-Box / Inverse S-Box
- MixColumns logic
- Includes both encryption and decryption flows
- Console output with verification
- Key Expansion
- Initial AddRoundKey
- Rounds 1-9
- SubBytes β ShiftRows β MixColumns β AddRoundKey
- Final Round (10)
- SubBytes β ShiftRows β AddRoundKey
- Initial AddRoundKey
- Rounds 9-1
- InvShiftRows β InvSubBytes β AddRoundKey β InvMixColumns
- Final Round
- InvShiftRows β InvSubBytes β AddRoundKey
javac SimplifiedAES128.java
java SimplifiedAES128Want to use or contribute to this project? Follow the steps below to fork and work with your own copy.
https://github.com/shaina-gh/AES
- Login to GitHub and go to the repo: shaina-gh/AES
- Click the "Fork" button at the top-right corner.
- GitHub will create a copy under your own account.
# 1. Clone your forked repository
git clone https://github.com/YOUR-USERNAME/AES.git
# 2. Navigate into the project directory
cd AES
# 3. Compile and run the project
javac SimplifiedAES128.java
java SimplifiedAES128