A secure, desktop-based password manager built with Java Swing that uses military-grade AES-256-GCM encryption.
✅ Master Password Protection - Create a strong master password on first use ✅ AES-256-GCM Encryption - Military-grade encryption for all stored passwords ✅ PBKDF2 Key Derivation - Secure password-to-encryption-key conversion ✅ Password Strength Analysis - Real-time strength indicator (Weak/Medium/Strong/Very Strong) ✅ Password Generator - Generate random strong passwords with customizable parameters ✅ Secure Clipboard - Passwords auto-clear from clipboard after 30 seconds ✅ Search & Filter - Quickly find entries by name, username, or URL ✅ Password Metadata - Track when passwords were created and last modified ✅ Clean UI - Modern dashboard with sidebar, topbar, and organized tables
- Java 21 or higher
- 50 MB free disk space
- Windows, macOS, or Linux
java -jar PassVault.jar- Install Java 21 and Maven
- Navigate to the project directory
- Run:
mvn clean install
mvn package- The executable JAR will be in
target/PassVault.jar
-
Setup Master Password: On first launch, you'll be prompted to create a master password
- Minimum 8 characters
- Strength indicator shows quality in real-time
- This password encrypts all your stored passwords
-
Main Dashboard: After setup, you'll see:
- Sidebar: Quick action buttons (Add, Edit, Delete, Generate, Copy, Lock)
- Topbar: Vault status, entry count, last used date, lock button
- Main Table: All stored password entries with strength indicators
- Click ➕ Add Entry in the sidebar
- Fill in: Name, Username/Email, Password, URL (optional)
- Password strength is shown in real-time
- Click Generate to create a strong random password
- Click Save to encrypt and store
- Select an entry in the table
- Click ✏️ Edit Entry or double-click the row
- Modify fields as needed
- Click Save
- Select an entry
- Click 🗑️ Delete Entry
- Confirm deletion
- Click 🔧 Generate Password
- Customize length (8-32 characters)
- Toggle character types: lowercase, uppercase, digits, symbols
- Click ✓ Use This to copy to clipboard
- Select an entry
- Click 📋 Copy Password
- Password copies to clipboard (auto-clears after 30 seconds)
- Use the search bar at the top
- Enter a name, username, or URL
- Results filter in real-time
- Click 🔐 Lock button in top-right
- This returns you to login screen
- Master password required to unlock
- Algorithm: AES-256 in GCM mode (authenticated encryption)
- Key Derivation: PBKDF2-SHA256 with 65,536 iterations
- IV: 12-byte random nonce per entry
- Authentication Tag: 128-bit GCM tag
- Length ≥8 chars: +1
- Length ≥12 chars: +1
- Length ≥16 chars: +1
- Contains lowercase: +1
- Contains uppercase: +1
- Contains digits: +1
- Contains symbols: +1
Scoring:
- 0-2 points = Weak (red)
- 3-4 points = Medium (orange)
- 5-6 points = Strong (green)
- 7+ points = Very Strong (dark green)
- All data stored in
~/.passvault/directory vault.json- Encrypted password entriesconfig.json- Master password hash and metadata- No data sent to cloud or external servers
- Your master password is never stored - only a hash
- All passwords are encrypted with AES-256-GCM
- Encryption keys are derived only when needed and cleared from memory
- The application is fully offline - no network calls
- Data persists only on your local machine
- If you forget your master password, there is a provision with one security question.
| Action | Shortcut |
|---|---|
| Login/Unlock | Enter |
| Generate Password | Click button |
| Copy Password | Click button |
| Edit Entry | Double-click row |
"Cannot find JDK"
- Install Java 21 from java.oracle.com
- Set JAVA_HOME environment variable
"JAR won't run"
- Ensure Java 21:
java -version - Try:
java -jar PassVault.jar
PassVault/
├── src/main/java/com/passvault/
│ ├── Main.java # Entry point
│ ├── AuthService.java # Master password auth
│ ├── VaultService.java # Password entry management
│ ├── StorageManager.java # File I/O & encryption
│ ├── EncryptionService.java # AES-256-GCM crypto
│ ├── PasswordEntry.java # Password data model
│ ├── PasswordGenerator.java # Random password gen
│ └── ui/
│ ├── LoginFrame.java # Login/setup screen
│ ├── VaultFrame.java # Main dashboard
│ ├── AddEditDialog.java # Entry editor modal
│ └── PasswordGeneratorDialog.java # Password gen dialog
├── pom.xml # Maven configuration
└── README.md # This file
- Gson (2.10.1) - JSON serialization
- Java Swing - UI framework (built-in)
- Java Cryptography - AES, PBKDF2 (built-in)