A robust password management solution built with Python, focusing on security, usability, and modern cryptographic standards.
- Customizable length (8-32 characters)
- Three complexity tiers:
- Simple: Dictionary-based, memorable combinations
- Moderate: Mixed character sets with guaranteed variety
- Complex: Full ASCII character set with maximum entropy
- Multi-layer encryption:
- PBKDF2 key derivation (100,000 iterations)
- Fernet symmetric encryption (AES-128 in CBC mode)
- SHA-256 password hashing with unique salts
- Modern dark-mode design with CustomTkinter
- Organized tabs for different functions:
- Generate Password: Create and evaluate new passwords
- Store Login: Save website credentials securely
- Search Login: Find credentials by website name
- Browse Login: View and manage all stored credentials
- Check Password: Analyze password strength in real-time
~/.pmg_secure/
├── pmg_secure.db # Encrypted SQLite database
└── pmg_secure.key # Key storage file
-
Clone the repository:
git clone https://github.com/IominimoI/CS50FinalProject.git cd CS50FinalProject
-
Set up a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Make the app callable from terminal:
# Create a simple shell script in a directory that is in your PATH echo '#!/bin/bash cd /path/to/CS50FinalProject source venv/bin/activate python pmg_gui.py' > ~/bin/pmgsecure # Make it executable chmod +x ~/bin/pmgsecure
Note: If
~/bin
isn't in your PATH, add it or use another directory that is.Alternatively, add an alias to your
.bashrc
or.zshrc
:echo 'alias pmgsecure="cd /path/to/CS50FinalProject && source venv/bin/activate && python pmg_gui.py"' >> ~/.bashrc source ~/.bashrc
-
Run the application:
pmgsecure
Use the
--daemon
flag to run the app in the background.
- First Use: Register a new account with a strong master password
- Password Management: Generate, store, and retrieve passwords through the intuitive interface
- Security: All sensitive data is encrypted before storage, with multiple layers of protection
This project is licensed under the MIT License - see the LICENSE file for details.
Developed as a final project for Harvard CS50x. Special thanks to the CS50 teaching team for their exceptional educational resources.