Skip to content

Latest commit

 

History

History
72 lines (48 loc) · 2.17 KB

File metadata and controls

72 lines (48 loc) · 2.17 KB

Password Encryption Manager

A web-based password manager built with Django and Python. Passwords are encrypted using a unique key per user, nothing is ever stored in plain text.

Features

  • Sign up / Login / Logout - Standard user authentication
  • Encrypted Vault - Add, view, edit, and delete password entries (website, username/email, password, note)
  • Per-User Encryption - Each account has its own Fernet symmetric encryption key
  • CSV Import / Export - Bulk import or export your passwords as a .csv file
  • Account Settings - Change your master password or delete your account
  • Strong Password Enforcement - 12+ chars, upper, lower, digit, special character, no spaces

Tech Stack

  • Backend: Django 5.2 (Python 3)
  • Database: SQLite3
  • Encryption: cryptography library (Fernet)
  • Frontend: HTML / CSS / JavaScript

Getting Started

Requirements: Python 3.10+, pip

# 1. Clone the repo
git clone https://github.com/RyanLam462/Password-Encryption-manager-python.git
cd Password-Encryption-manager-python

# 2. Create and activate a virtual environment
python -m venv venv
source venv/bin/activate        # macOS/Linux
venv\Scripts\activate           # Windows

# 3. Install dependencies
pip install django cryptography

# 4. Run migrations and start the server
cd password_manager
python manage.py migrate
python manage.py runserver

Then open http://127.0.0.1:8000/ in your browser.

How Encryption Works

On sign-up, a unique Fernet key is generated and saved to the user's profile. Passwords are encrypted before being written to the database and decrypted in memory when accessed, plain text is never stored.

CSV Import Format

The imported file must have this exact header:

Website,Username/Email,Password,Note

Rows with missing required fields or duplicate entries are skipped automatically.

Security Notes

This project is for local development only (DEBUG = True).

Before deploying to production:

  • Set DEBUG = False and move SECRET_KEY to an environment variable
  • Configure ALLOWED_HOSTS and use HTTPS
  • Switch to a production database (e.g. PostgreSQL)

License

MIT License