-
Vault Keeper is a beginner-friendly Python learning project demonstrating how a simple in-memory password manager works.
-
The goal is to understand password encryption, key derivation, and secure handling in a safe, interactive session.
-
This is not a production-ready password manager.
-
Learn how passwords can be encrypted at rest (in memory).
-
Understand encryption vs hashing.
-
Practice deriving keys from a master password (PBKDF2-HMAC-SHA256).
-
Safely manage secrets in a session-only vault.
-
Think critically about security assumptions and limitations.
-
Derives an encryption key from a master password.
-
Encrypts password entries before storing them in memory.
-
Decrypts data only after successful authentication.
-
Demonstrates secure-storage patterns and workflow.
-
Provides an interactive CLI for adding and viewing entries.
❌ A production password manager.
❌ A replacement for audited security tools.
❌ Safe for real credentials.
At a high level:
-
User creates a master password.
-
A cryptographic key is derived from the master password using PBKDF2.
-
Password entries are encrypted in memory with XOR (for demo purposes).
-
Entries remain in memory only; nothing is saved to disk.
-
Data is decrypted only with the master password.
Vault Keeper assumes a local, educational environment.
- Storing plaintext passwords in memory carelessly.
Demonstrating encryption/decryption workflow.
-
Malware or keyloggers.
-
Weak master passwords.
-
OS compromise or advanced cryptographic attacks.
⚠️ This threat model is intentionally limited for learning purposes.
-
Python standard library
-
hashlib(PBKDF2 key derivation) -
secrets(random salt generation) -
getpass(hidden password input) -
json(dict serialization for encryption/decryption)
(All operations occur in memory, no files are written.)
-
Ensure Python 3.9+ is installed
-
Clone the repository
-
Navigate to directory:
cd vault-keeper -
Run:
python vault-keeper.py====================================
Welcome to Vault Keeper!
====================================
Create master password:
✔ Vault initialized.
Add entry:
Service: github
Username: v4u1t-k33p3r
Password: ********
✔ Entry added to vault (in-memory).
View vault:
{
"github": {
"username": "v4u1t-k33p3r",
"password": "badpassword321"
}
}
Exit program:
Thank you & Goodbye!-
Master password strength is important.
-
XOR encryption is for demonstration only and not secure for real passwords.
-
Vault exists only in memory; restarting the script clears all data.
- MIT License - see
LICENSEfor details.