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.
- 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.
| 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) |
- Language: Python 3.x
- Frontend: Streamlit
- Cryptography: PyCryptodome
- Database: MySQL / MariaDB
- Environment Management:
python-dotenv
- Key Generation: The system derives encryption keys from a master
SECRET_KEYdefined in the environment variables. - 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.
- Storage: Only the encrypted ciphertext and the IV are stored in the database.
- Decryption: During login, the system retrieves the ciphertext, extracts the IV, and uses the master key to decrypt the data for verification.
| Login Page | Registration Page | Dashboard |
|---|---|---|
![]() |
![]() |
![]() |
- Python 3.8+
- MySQL or MariaDB Server
-
Clone the repository:
git clone https://github.com/EsamAdelAlselwi/AES_Vault.git cd AES_Vault -
Install dependencies:
pip install -r requirements.txt
-
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' );
- Create a database named
-
Configuration:
- Copy
env.exampleto.env:cp env.example .env
- Edit
.envand provide your database credentials and a strongSECRET_KEY.
- Copy
To run the application, use the following command:
streamlit run src/app.pyAES_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
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.
This project is licensed under the MIT License - see the LICENSE file for details.


