Cipher Vault is a password manager built using Python.
The project evolved from a basic file-based system to a database-backed application with a web interface. It allows users to securely store and manage credentials using encryption, with support for CRUD operations and search functionality.
Passwords are never stored in plain text and require a PIN for access.
This project has two versions:
- Stores data in a local file
- Uses JSON for persistence
- Demonstrates file handling and basic encryption
- Uses MySQL database for storage
- Implements CRUD operations using SQL
- Adds search functionality
- Includes a Streamlit-based web interface
- Improved structure and real-world relevance
- Add, update, delete, and view credentials
- Encrypted password storage (XOR-based)
- PIN-based password access
- Search credentials by website
- Menu-driven CLI interface
- Database integration using MySQL
- Web-based interface using Streamlit
- Language: Python
- Database: MySQL
- Storage (basic version): JSON
- Interface: CLI and Streamlit (Web UI)
cipher-vault/
│
├── json-version/
│ ├── main.py
│ └── password_manager.txt
│
├── mysql-version/
│ ├── main.py
│ ├── db.py
│ ├── app.py
│ ├── requirements.txt
│
├── images/
│ ├── json/
│ ├── mysql/
│
└── README.md
CREATE DATABASE cipher_vault;
CREATE TABLE credentials (
id INT AUTO_INCREMENT PRIMARY KEY,
website VARCHAR(255),
username VARCHAR(255),
password TEXT
);
Update db.py with your local configuration:
host="localhost",
user="root",
password="your_password",
database="cipher_vault"
python main.py
Navigate to the MySQL version:
cd mysql-version
Install dependencies:
pip install -r requirements.txt
Run the application:
streamlit run app.py
Open in browser:
http://localhost:8501
Main Menu:
Accessing Password:
Main Menu:
Database View:
Accessing Password:
Interface:
Access Password:
This project uses a basic XOR-based reversible encryption method.
encrypted = ord(char) ^ key
decrypted = chr(encrypted ^ key)
Passwords are stored in encrypted form and converted using JSON for database compatibility.
Note: This method is implemented for learning purposes and is not suitable for production use.
- CLI-based application development
- File handling and JSON processing
- Database integration with MySQL
- CRUD operations using SQL
- Basic encryption techniques
- Building a simple web interface using Streamlit
- Code modularization and structure improvement
- Strong encryption (Fernet)
- User authentication system
- Enhanced UI using Flask or modern frontend frameworks
Bhushan Bhutada Computer Engineering Student






