Skip to content

EsamAdelAlselwi/AES-Vault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AES Vault Professional 🛡️

AES Vault is a professional academic project designed to demonstrate the implementation of various cryptographic algorithms in a modern web application. It provides a secure environment for user authentication and data storage, showcasing the differences between modern and legacy encryption standards.

🌟 Features

  • Multi-Algorithm Support: Choose between AES, 3DES, and DES for data encryption.
  • Secure Authentication: User registration and login with encrypted credentials.
  • Interactive Dashboard: Visualize the difference between original data and stored ciphertext.
  • Modern UI/UX: Built with Streamlit featuring a sleek Glassmorphism design.
  • Educational Insights: Detailed information about each algorithm's security level, speed, and key size.

🔐 Supported Algorithms

Algorithm Full Name Key Size Security Level Recommended
AES Advanced Encryption Standard 256-bit Very High 🛡️ Yes
3DES Triple Data Encryption Standard 192-bit Medium to High ⚠️ No
DES Data Encryption Standard 56-bit Weak ⛔ No (Educational)

🛠️ Technologies Used

  • Language: Python 3.x
  • Frontend: Streamlit
  • Cryptography: PyCryptodome
  • Database: MySQL / MariaDB
  • Environment Management: python-dotenv

📖 How It Works (Simplified)

  1. Key Generation: The system derives encryption keys from a master SECRET_KEY defined in the environment variables.
  2. Encryption: When a user registers, their email and password are encrypted using the selected algorithm in CBC (Cipher Block Chaining) mode with a unique Initialization Vector (IV) for every operation.
  3. Storage: Only the encrypted ciphertext and the IV are stored in the database.
  4. Decryption: During login, the system retrieves the ciphertext, extracts the IV, and uses the master key to decrypt the data for verification.

📸 Screenshots

Login Page Registration Page Dashboard
Login Register Dashboard

🚀 Installation & Setup

Prerequisites

  • Python 3.8+
  • MySQL or MariaDB Server

Steps

  1. Clone the repository:

    git clone https://github.com/EsamAdelAlselwi/AES_Vault.git
    cd AES_Vault
  2. Install dependencies:

    pip install -r requirements.txt
  3. Database Setup:

    • Create a database named secure_auth_db.
    • Run the following SQL to create the users table:
      CREATE TABLE users (
          id INT AUTO_INCREMENT PRIMARY KEY,
          username VARCHAR(50) NOT NULL,
          email TEXT NOT NULL,
          email_hash VARCHAR(64) NOT NULL,
          password TEXT NOT NULL,
          encryption_algorithm VARCHAR(10) DEFAULT 'AES'
      );
  4. Configuration:

    • Copy env.example to .env:
      cp env.example .env
    • Edit .env and provide your database credentials and a strong SECRET_KEY.

💻 Usage

To run the application, use the following command:

streamlit run src/app.py

📂 Project Structure

AES_Vault/
├── src/                # Source code
│   ├── app.py          # Main Streamlit application
│   ├── auth.py         # Authentication logic
│   ├── encryption.py   # Cryptographic implementations
│   └── database.py     # Database connection handling
├── screenshots/        # Project visual previews
├── docs/               # Technical documentation
├── .env.example        # Environment template
├── .gitignore          # Git ignore rules
├── LICENSE             # MIT License
└── requirements.txt    # Python dependencies

⚠️ Security Notice

This project is created for educational and academic purposes. While it uses industry-standard AES encryption, it demonstrates reversible encryption for passwords to showcase decryption. In a production environment, passwords should always be hashed using non-reversible algorithms like bcrypt or Argon2.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages