Security · Personal project
Password Manager
My first security project: a command-line password vault that encrypts each stored password with Fernet. I built it to learn the fundamentals of symmetric encryption and key management, and it led directly to my Secure Login System.
- Python
- cryptography
- Fernet


How it works
A menu loop in the terminal lets the user:
- generate a new key (saved to its own file) or load an existing one;
- create a new password file or load an existing one;
- add a site and password, which is encrypted before it's written;
- look up a site and decrypt its password.
Security
- Authenticated encryption: Fernet combines AES-128 in CBC mode with an HMAC-SHA256 signature, so a tampered entry fails to decrypt instead of returning garbage.
- Random keys: 32-byte keys from
Fernet.generate_key(), split internally into signing and encryption keys. - No plain text at rest: only ciphertext tokens are written to the password file.
What I'd improve next
- Derive the key from a master password with a slow key-derivation function (scrypt or Argon2) instead of keeping it in a file next to the vault.
- Add a GUI that hides decrypted passwords again after a short timeout.