This project implements the 128-bit Advanced Encryption Standard (AES) algorithm on an 8086 microprocessor. The implementation includes reading 128-bit input data from the user, performing AES encryption, and printing the result to the screen.
- Procedures: Handles user input and output using interrupts.
- Macros: Implements the core AES functions:
SubBytes()
ShiftRows()
MixColumns()
AddRoundKey()
- Main Program: Orchestrates the AES encryption process over 10 rounds.
- Key Schedule
- An 8086 emulator such as EMU8086 or any other preferred 8086 emulator.
- Basic understanding of assembly language and the 8086 architecture.
- Familiarity with the AES algorithm. Refer to the AES standard document for detailed information.
- Download and install the EMU8086 emulator from http://www.emu8086.com.
- Clone this repository or download the project files.
- Open the EMU8086 emulator.
- Load the assembly file into the emulator.
- Assemble and run the program.
- Follow the on-screen prompts to enter the 128-bit input data and key.
- The program will output the encrypted data after completing the AES encryption process.
The SubBytes
operation replaces each byte in the input block with a corresponding byte from the S-box. The S-box is a predefined 16x16 matrix that provides a non-linear substitution.
Use the provided test case from the AES standard to verify your implementation. Ensure the program encrypts the input correctly and produces the expected output.
This project is licensed under the MIT License. See the LICENSE file for more details.
- AES standard document: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
- AES animation: Rijndael Animation
- MixColumns description: Mix Columns
- Mohammed El Said Azab Abdelazim
- Fam Awad Louiz Awad Shihata
- Adam Mahmood mahmood elsayed