A command-line encrypted note storage application that provides secure, password-protected note management with military-grade encryption.
- Strong Encryption: Uses Fernet (AES 128) encryption with PBKDF2 key derivation
- Password Protection: Master password required to access notes
- Organized Storage: Add tags to categorize your notes
- Rich Interface: Beautiful command-line interface using Rich library
- Clipboard Integration: Copy decrypted notes directly to clipboard
- Timestamped: Automatic timestamps for all notes
- Secure Password Changes: Change master password while preserving existing notes
- Zero-Knowledge: Notes are encrypted before storage - only you can read them
- Python 3.7 or higher
- pip package manager
Install the required packages:
pip install cryptography rich pyperclip- Clone this repository:
git clone https://github.com/pro-yash-jects/SecureNoteVault.git
cd SecureNoteVault- Run the application:
python vault_cli.py --helppython vault_cli.py listShows a table with index numbers, timestamps, and tags - but not the actual note content.
python vault_cli.py addYou'll be prompted to enter your master password and then your note content.
python vault_cli.py add --tags personal importantpython vault_cli.py view 0Replace 0 with the index number from the list command. You'll have the option to copy the decrypted note to your clipboard.
python vault_cli.py delete 0Replace 0 with the index number of the note you want to delete.
python vault_cli.py changepwSafely change your master password while preserving all existing notes.
# Add your first note
$ python vault_cli.py add --tags work urgent
Enter master password: ********
Enter your note: Remember to submit the quarterly report by Friday
# List your notes
$ python vault_cli.py list
Enter master password: ********
┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Index ┃ Timestamp ┃ Tags ┃
┡━━━━━━━┇━━━━━━━━━━━━━━━━━━━┇━━━━━━━━━━━━━┩
│ 0 │ 08 Jun 2025 19:30 │ work, urgent│
└───────┴───────────────────┴─────────────┘
# View the note
$ python vault_cli.py view 0
Enter master password: ********
Note: Remember to submit the quarterly report by Friday
Copy to clipboard? (y/n): y
Copied to clipboard.SecureNoteVault/
│
├── vault_cli.py # Main CLI application
├── crypto_utils.py # Cryptographic utilities
├── vault_utils.py # Vault storage management
├── vault.dat # Encrypted vault file (created on first use)
├── vault.salt # Salt file for key derivation (created on first use)
└── README.md # This file
- Encryption: Fernet (AES 128 in CBC mode with HMAC-SHA256 authentication)
- Key Derivation: PBKDF2-HMAC-SHA256 with 390,000 iterations
- Salt: 16-byte random salt stored separately from the vault
- Authentication: Built-in authentication prevents tampering
- Notes are stored in
vault.datas an encrypted JSON array - Each note entry contains:
note: Encrypted note contenttimestamp: Creation timestamptags: Array of tags for organization
- Your master password is never stored - only used for key derivation
- Each note is individually encrypted before being stored
- The vault file cannot be decrypted without the correct master password
- Salt prevents rainbow table attacks
- High iteration count (390,000) prevents brute force attacks
- Backup: The salt file (
vault.salt) is crucial - losing it makes your vault unrecoverable - Password Strength: Use a strong, unique master password
- Memory: Notes are temporarily decrypted in memory during viewing
- Clipboard: Be aware that clipboard contents may be logged by some systems
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Run basic functionality tests:
# Test adding and viewing a note
python vault_cli.py add --tags test
python vault_cli.py list
python vault_cli.py view 0- Python 3.7+
- cryptography >= 3.0.0
- rich >= 10.0.0
- pyperclip >= 1.8.0
"Failed to decrypt vault. Wrong password?"
- Ensure you're entering the correct master password
- Check that the
vault.saltfile exists in the same directory
"Invalid index"
- Use
python vault_cli.py listto see valid index numbers - Remember that indexing starts from 0
Clipboard not working
- On Linux, you may need to install
xcliporxsel - On some systems, clipboard functionality may require additional permissions
If you encounter any issues or have questions:
- Check the troubleshooting section above
- Search existing GitHub issues
- Open a new issue with detailed information about your problem
⚡ Quick Start: python vault_cli.py add → Enter password → Enter note → Done!