|
1 |
| -## PassVault Project Overview |
| 1 | +# PasswordSentinel |
2 | 2 |
|
3 |
| -**Project Name:** PassVault |
| 3 | +## About |
4 | 4 |
|
5 |
| -**Objective:** |
6 |
| -The objective of this project is to create a secure, user-friendly application for generating, managing, and storing passwords. The application features a password generator, strength indicator, and a password manager that securely saves and retrieves passwords. |
| 5 | +PasswordSentinel is a secure, local-only password manager built with Java, using Java Swing GUI. All data stays on your device, ensuring complete privacy while offering strong password generation and safe storage. |
7 | 6 |
|
8 |
| -**Technologies Used:** |
9 |
| -- Java Swing for GUI |
10 |
| -- Java I/O for file operations |
11 |
| -- Java Collections for data management |
| 7 | +## Project Structure |
12 | 8 |
|
13 |
| -### Key Components: |
| 9 | +The project consists of the following main components: |
14 | 10 |
|
15 |
| -1. **Password Generation:** |
16 |
| - - **Character Sets:** Includes uppercase letters, lowercase letters, numbers, and symbols. |
17 |
| - - **Length Control:** Allows users to set password length between 6 to 30 characters. |
18 |
| - - **Options:** Users can choose which character sets to include in the generated password. |
| 11 | +1. PasswordSentinel.java - Main application class |
| 12 | +2. LoginDialog.java - Handles user authentication |
| 13 | +3. PasswordManager.java - Manages password storage and retrieval |
| 14 | +4. PasswordGenerator.java - Generates secure passwords |
| 15 | +5. PasswordStrengthCalculator.java - Calculates password strength |
| 16 | +6. GeneratorPanel.java - UI for password generation |
| 17 | +7. SavedPasswordsPanel.java - UI for managing saved passwords |
| 18 | +8. PasswordStrengthCheckerPanel.java - UI for checking password strength |
| 19 | +9. SavePasswordDialog.java - Dialog for saving or editing passwords |
| 20 | +10. PasswordEntry.java - Represents a single password entry |
| 21 | +11. EncryptionUtil.java - Handles encryption and decryption of password data |
19 | 22 |
|
20 |
| -2. **Password Strength Indicator:** |
21 |
| - - **Criteria:** Evaluates password strength based on length, character variety (uppercase, lowercase, numbers, symbols). |
22 |
| - - **Visualization:** Uses a `JProgressBar` to show password strength, with labels "Weak", "Medium", and "Strong". |
| 23 | +## Main Features |
23 | 24 |
|
24 |
| -3. **Password Management:** |
25 |
| - - **Saving Passwords:** Allows users to save generated passwords with labels and optional usernames. |
26 |
| - - **Retrieving Passwords:** Stored passwords can be revealed or hidden, and managed through a table interface. |
27 |
| - - **Editing and Deleting:** Users can edit or delete saved passwords. |
28 |
| - - **Manual Entry:** Supports manual addition of passwords. |
| 25 | +1. Secure local storage of passwords |
| 26 | +2. Password generation with customizable options |
| 27 | +3. Password strength calculation and visual feedback |
| 28 | +4. User-friendly interface for managing passwords |
| 29 | +5. Search functionality for saved passwords |
| 30 | +6. Password reveal/hide functionality |
| 31 | +7. Edit and delete options for saved passwords |
29 | 32 |
|
30 |
| -4. **Encryption and Security:** |
31 |
| - - **Storage:** Passwords are saved in an encrypted format in a file named `passwords.dat`. |
32 |
| - - **Encryption Utility:** Placeholder for encryption and decryption methods (to be implemented). |
| 33 | +## File Descriptions |
33 | 34 |
|
34 |
| -5. **User Interface:** |
35 |
| - - **Tabbed Pane:** Divides functionality into two main tabs - "Generator" and "Saved Passwords". |
36 |
| - - **Stylized Components:** Uses custom colors and fonts to enhance UI aesthetics. |
| 35 | +### PasswordSentinel.java |
37 | 36 |
|
38 |
| -### UI Components: |
| 37 | +This is the main class of the application. It sets up the main window and initializes the different panels (Generator, Saved Passwords, and Password Strength Checker). |
39 | 38 |
|
40 |
| -- **Generator Panel:** |
41 |
| - - **Password Field:** Displays generated passwords. |
42 |
| - - **Controls:** Sliders and checkboxes for password length and character set selection. |
43 |
| - - **Buttons:** Includes "Generate Password" and "Copy". |
| 39 | +Key features: |
| 40 | +- Initializes the main UI components |
| 41 | +- Sets up the tabbed pane for different functionalities |
| 42 | +- Creates header and footer panels |
44 | 43 |
|
45 |
| -- **Saved Passwords Panel:** |
46 |
| - - **Table:** Displays saved passwords with actions to reveal, edit, or delete. |
47 |
| - - **Buttons:** Includes options to save generated passwords, delete selected passwords, edit passwords, and add manual entries. |
| 44 | +### LoginDialog.java |
48 | 45 |
|
49 |
| -### Class Descriptions: |
| 46 | +Handles user authentication to access the password manager. |
50 | 47 |
|
51 |
| -- **PassVault:** Main class extending `JFrame` that sets up the UI and handles the core functionality. |
52 |
| -- **PasswordEntry:** Represents a password entry with label, username, and password. |
53 |
| -- **EncryptionUtil:** Placeholder class for encryption and decryption logic. |
54 |
| -- **ButtonRenderer & ButtonEditor:** Custom renderer and editor for table cell buttons. |
| 48 | +Key features: |
| 49 | +- Creates a login form with username and password fields |
| 50 | +- Validates user credentials (currently set to admin/admin) |
| 51 | +- Launches the main PasswordSentinel window upon successful login |
55 | 52 |
|
56 |
| -### Future Enhancements: |
| 53 | +### PasswordManager.java |
57 | 54 |
|
58 |
| -- **Implement Encryption:** Replace placeholder methods in `EncryptionUtil` with actual encryption algorithms. |
59 |
| -- **Validation Logic:** Enhance login validation with a secure authentication mechanism. |
60 |
| -- **Backup and Sync:** Add features for password backup and synchronization across devices. |
| 55 | +Manages the storage, retrieval, and manipulation of password entries. |
| 56 | + |
| 57 | +Key features: |
| 58 | +- Adds, edits, and deletes password entries |
| 59 | +- Saves passwords to a file (passwords.dat) |
| 60 | +- Loads passwords from the file |
| 61 | +- Implements change listeners to notify UI components of data changes |
| 62 | + |
| 63 | +### PasswordGenerator.java |
| 64 | + |
| 65 | +Generates secure passwords based on user-defined criteria. |
| 66 | + |
| 67 | +Key features: |
| 68 | +- Generates passwords with specified length |
| 69 | +- Allows inclusion/exclusion of uppercase, lowercase, numbers, and symbols |
| 70 | + |
| 71 | +### PasswordStrengthCalculator.java |
| 72 | + |
| 73 | +Calculates the strength of a given password. |
| 74 | + |
| 75 | +Key features: |
| 76 | +- Evaluates password strength based on length, character types, and complexity |
| 77 | +- Returns a strength score from 0 to 5 |
| 78 | + |
| 79 | +### GeneratorPanel.java |
| 80 | + |
| 81 | +Provides a user interface for generating and customizing passwords. |
| 82 | + |
| 83 | +Key features: |
| 84 | +- Allows users to specify password length and character types |
| 85 | +- Displays generated password and its strength |
| 86 | +- Provides options to copy and save generated passwords |
| 87 | + |
| 88 | +### SavedPasswordsPanel.java |
| 89 | + |
| 90 | +Displays and manages saved passwords. |
| 91 | + |
| 92 | +Key features: |
| 93 | +- Shows a table of saved passwords with labels and usernames |
| 94 | +- Provides search functionality |
| 95 | +- Allows editing and deleting of saved passwords |
| 96 | +- Implements a "reveal" button to show/hide passwords |
| 97 | + |
| 98 | +### PasswordStrengthCheckerPanel.java |
| 99 | + |
| 100 | +Allows users to check the strength of any password. |
| 101 | + |
| 102 | +Key features: |
| 103 | +- Provides a password input field |
| 104 | +- Displays password strength with a progress bar |
| 105 | +- Shows which password requirements are met |
| 106 | + |
| 107 | +### SavePasswordDialog.java |
| 108 | + |
| 109 | +A dialog for saving new passwords or editing existing ones. |
| 110 | + |
| 111 | +Key features: |
| 112 | +- Allows users to enter or edit label, username, and password |
| 113 | +- Displays password strength in real-time |
| 114 | +- Handles both new password entries and edits to existing entries |
| 115 | + |
| 116 | +### PasswordEntry.java |
| 117 | + |
| 118 | +Represents a single password entry with label, username, and password. |
| 119 | + |
| 120 | +Key features: |
| 121 | +- Implements Serializable for easy storage and retrieval |
| 122 | +- Provides getters and setters for all fields |
| 123 | + |
| 124 | + |
| 125 | +## Encryption |
| 126 | + |
| 127 | +The application uses AES (Advanced Encryption Standard) to encrypt password data before storing it in the passwords.dat file. This ensures that even if someone gains access to the file, they cannot read the passwords without the encryption key. |
| 128 | + |
| 129 | +### EncryptionUtil.java |
| 130 | + |
| 131 | +This utility class provides methods for encrypting and decrypting data using AES. |
| 132 | + |
| 133 | +Key features: |
| 134 | +- Uses AES algorithm for encryption and decryption |
| 135 | +- Provides static methods `encrypt` and `decrypt` for easy use throughout the application |
| 136 | +- Uses a fixed encryption key (Note: In a production environment, this should be securely managed and not hardcoded) |
| 137 | + |
| 138 | +### passwords.dat |
| 139 | + |
| 140 | +This file stores the encrypted password data. Each entry in the file is encrypted using AES before being written to the file. |
| 141 | + |
| 142 | + |
| 143 | +## Security Notes |
| 144 | + |
| 145 | +- Passwords are stored locally on the user's device in the passwords.dat file |
| 146 | +- The application uses AES encryption for storing passwords |
| 147 | +- The encryption key is currently hardcoded in the EncryptionUtil class (This should be improved in a production environment) |
| 148 | +- Users should ensure their device is secure to protect the stored passwords and the encryption key |
| 149 | +- The passwords.dat file should be protected from unauthorized access |
| 150 | + |
| 151 | +## Future Improvements |
| 152 | + |
| 153 | +- Implement stronger encryption for stored passwords |
| 154 | +- Add multi-factor authentication for accessing the password manager |
| 155 | +- Implement password sharing functionality for team use |
| 156 | +- Add automatic password strength assessment for all saved passwords |
| 157 | +- Implement password expiration and rotation reminders |
| 158 | +- Implement secure key management for the encryption key, possibly using a key derivation function based on a master password |
| 159 | +- Add an option for users to change the encryption key |
| 160 | +- Implement secure deletion of the passwords.dat file when the user chooses to reset the password manager |
| 161 | + |
| 162 | +## Contributors |
| 163 | + |
| 164 | +- @CyberSphinxxx |
| 165 | +- @davenarchives |
| 166 | +- @rhoii |
| 167 | +- @BisayangProgrammer |
| 168 | +- @HarryGwapo |
| 169 | + |
| 170 | +--- |
| 171 | + |
| 172 | +© 2024 Password Sentinel. All rights reserved. |
0 commit comments