Skip to content

This project implements the Advanced Encryption Standard (AES) using Verilog. It supports AES-128, AES-192, and AES-256 bit encryption and decryption, optimized for FPGA implementation.

License

Notifications You must be signed in to change notification settings

ahmedfathy090/AES

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AES: Advanced Encryption System 🔐

This repository contains a Verilog implementation of the Advanced Encryption Standard (AES) algorithm, developed as part of a first-year computer engineering course on advanced logic design.

🚀Features

  • Flexible Key Length Support: Encrypts and decrypts data using 128-bit, 192-bit, or 256-bit keys (depending on your implementation choices).
  • Debugging Assistance: Provides a log transcript that can be printed during operation to aid in debugging.
  • Verification: Includes testbenches for thorough verification of encryption and decryption functionality.

📃Classes structure:

image

image resource

Top-Level Module AES.v

  • This module serves as the entry point for your AES design.
  • It takes inputs such as:
    • Plaintext/Ciphertext data
    • Key
    • Control signals (e.g., encryption/decryption mode, key length selection)
  • It instantiates the following sub-modules:
    • keysGenerator.v which in turn calls
    • Cipher.v which in turn calls Round function modules (e.g., SubBytes.v, ShiftRows.v, MixColumns.v, AddRoundKey.v)
    • InvCipher.v which in turn calls Inverse Round function modules (e.g., InvSubBytes.v, InvShiftRows.v, InvMixColumns.v, AddRoundKey.v)
  • It performs the following operations:
    • Selects the appropriate key length depending on the selected mode
    • Loops through the required number of rounds (based on key length) by iterating over the round function modules.
    • Provides the final encrypted/decrypted output.
  • Implements a log transcript mechanism (using system tasks like $display or dedicated logging signals) to print intermediate values for debugging.

🚧Getting Started

  1. Start with cloning the repo
git clone https://github.com/ahmedfathy090/AES.git
  1. Synthesis and Simulation

Tip

Don't forget to make use of the debugging assistant transcript provided in the code!


👩🏻‍💻👩🏻‍💻Contributors 🧑🏻‍💻🧑🏻‍💻


Ahmed Fathy

Habiba Ayman

Tasneem Mohamed

Ahmed Gamal

About

This project implements the Advanced Encryption Standard (AES) using Verilog. It supports AES-128, AES-192, and AES-256 bit encryption and decryption, optimized for FPGA implementation.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •