YAPM (Yet Another Password Manager) is a simple, secure, and flexible password manager that works online. Designed with usability and privacy in mind, YAPM helps you securely store and manage your passwords and sensitive credentials without compromising on convenience or security.
- Secure Storage: All passwords and sensitive data are encrypted using strong cryptographic algorithms.
- User Authentication: Secure login system to protect access to your password vault.
- Intuitive UI: Simple and clean user interface for easy management of credentials.
- Password Generation: Built-in strong password generator to help you create secure passwords as well as strength detection.
- Cross-Platform: Designed for use on multiple operating systems.
- Extensible: Modular architecture for adding new features or integrations.
- Language: Java
- Encryption: Uses industry-standard cryptographic libraries (e.g., AES) to encrypt all sensitive data before storage.
- Persistence: Supports remote database/server storage (for online mode).
- User Interface: Built with Java Swing (FlatLaf library) for a responsive desktop experience.
- Dependency Management: Uses Gradle for managing dependencies and builds.
-
Authentication Module
- Manages user registration, login, and session management.
- Passwords are salted and hashed using secure algorithms (e.g., PBKDF2, bcrypt).
- MYSQL database is utilized for storing user credentials as well as a timestamp for last login.
-
Encryption Module
- Handles all encryption/decryption operations.
- Utilizes a master password to derive encryption keys.
- Ensures that decrypted data is only available in memory when needed.
-
Storage Module
- Treats storage as remote vaults.
-
Password Management Module
- CRUD operations (Create, Read, Update, Delete) for password entries.
-
UI Module
- Presents an intuitive interface for managing credentials.
- Includes addition, deletion, and edition capabilities.
-
Password Generator
- Generates strong, random passwords including lowercase alphabets, uppercase alphabets, digits, and a collection of 32 special characters.
- Displays the strength of generated/manually typed password.
- Zero-Knowledge: Master password is never stored or transmitted; only the user knows it.
- Secure Memory Handling: Sensitive data is cleared from memory as soon as it is no longer needed.
- Regular Security Audits: Code is structured for easy review and audit.
| Purpose | Algorithm | Parameters |
|---|---|---|
| Data encryption | AES/CBC/PKCS5Padding | 256-bit key, 16B IV, 16B salt, PKCS5Padding |
| Key derivation | PBKDF2WithHmacSHA256 | 65,536 iterations, 256-bit key, 16B salt |
| Password hashing | PBKDF2WithHmacSHA1 | 65,536 iterations, 128-bit key, 16B salt |
-
First-Time Setup
- User creates an account which associates with a master password, with which an encrypted vault is initialized.
-
Adding a Password
- User adds a new entry; data is encrypted and stored remotely.
For unix-like operating systems.
-
Clone the Repository
git clone https://github.com/YabaiTech/YAPM.git cd YAPM -
Get Crendentials for Cloud DB and Cloud Storage and Copy it Over to app/.env
cp prod.env app/.env
-
Build the Project
./gradlew build
-
Run the Application
./gradlew run
- Not an offline password manager, which is theoretically more secure.
- Due to using the free tier of Supabase as cloud storage of the vaults, the sycning is not seemless. The caching delay holds back the updation of the vault across multiple devices.
This project is licensed under the MIT License. See the LICENSE file for details.
Don't bother.