This application is a work-in-progress, designed to securely manage your passwords while offering flexibility and ease of use. Currently, it serves as a basic password manager with essential features and lays the groundwork for more advanced functionality in the future.
-
Add Entries:
- Store credentials including
username,service, andpasswordsecurely. - Each entry is assigned a unique ID automatically.
- Store credentials including
-
List Entries:
- View all stored entries in a simple list format.
- Passwords can be toggled for visibility.
-
Edit Entries:
- Update existing credentials by specifying the entry ID.
-
Delete Entries:
- Remove an entry permanently using its ID.
-
Toggle Password Visibility:
- Show or hide passwords for individual entries.
-
Archive Support:
- Save and load your credentials to/from a secure
.arcfile format. - Uses PBKDF2 for key derivation and Salsa20 for encryption.
- Compresses data for efficient storage.
- Save and load your credentials to/from a secure
The program operates with an in-memory structure for managing credentials:
PasswordManager: A structure containing a list of entries and a counter for generating unique IDs.
-
Add Entry: Call the
add_entrymethod withusername,service, andpasswordto add a new record. -
List Entries: The
list_entriesmethod retrieves a list of all entries. Passwords are hidden by default. -
Edit Entry: Update an entry by providing the ID along with the new details.
-
Delete Entry: Remove an entry by its ID using the
delete_entrymethod. -
Toggle Password Visibility: Use the
toggle_show_passwordmethod with an entry ID to show or hide the password for that entry.
The archive system provides secure file-based storage for credentials.
- Entries are serialized into JSON format.
- Data is compressed using zlib.
- A unique salt is generated for key derivation.
- The passphrase is used with PBKDF2 to derive a 256-bit encryption key.
- Data is encrypted using Salsa20.
- The file is saved with a header (magic bytes, version), salt, and encrypted data.
- The
.arcfile is validated using the header. - Salt is read to regenerate the encryption key from the passphrase.
- Data is decrypted and decompressed.
- Entries are reconstructed from the JSON data.
- Rust programming language and Cargo installed on your system.
- A terminal or IDE to run the application.
-
Clone the repository:
git clone https://github.com/aidan729/Password-Manager.git cd Password-Manager -
Build the project:
cargo build --release
-
Run the application:
cargo run
-
Use the
PasswordManagerAPI to add, list, edit, or delete entries, or to save/load archives.
This project is in its early stages of development. Here’s what’s coming:
-
Enhanced Security:
- Password History Tracking: Store a secure history of old passwords to prevent reusing them accidentally.
- Breach Monitoring: Notify users if their passwords or services are part of known data breaches using APIs like HaveIBeenPwned.
- Customizable Password Policies: Allow users to define minimum password lengths, complexity requirements, and expiration periods.
- Idle Lock Mechanism: Automatically lock the app after a period of inactivity.
-
Additional Features:
- Batch Import/Export:
- Import passwords from other password managers (CSV, JSON).
- Export passwords securely for backups or migration.
- User Roles and Permissions: Allow shared accounts with controlled access for families or teams.
- Multiple Vaults: Create separate vaults for personal, work, or shared accounts.
- Color-Coded Categories: Assign categories or tags to entries for better organization.
- Light/Dark Mode: User interface theme toggle for better usability.
- Batch Import/Export:
Contributions are welcome! If you have ideas or want to help build new features, feel free to open issues or submit pull requests.
This project is licensed under the MIT License.
This is a rudimentary password manager and not yet production-ready. While the current implementation uses strong encryption practices, use it cautiously and avoid storing sensitive credentials until the project matures further.
Thank you for exploring this project! 🚀
