Skip to content

Commit 130b5ab

Browse files
committed
2 parents 01bb90c + 0640d3f commit 130b5ab

File tree

1 file changed

+156
-44
lines changed

1 file changed

+156
-44
lines changed

README.md

Lines changed: 156 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,172 @@
1-
## PassVault Project Overview
1+
# PasswordSentinel
22

3-
**Project Name:** PassVault
3+
## About
44

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.
76

8-
**Technologies Used:**
9-
- Java Swing for GUI
10-
- Java I/O for file operations
11-
- Java Collections for data management
7+
## Project Structure
128

13-
### Key Components:
9+
The project consists of the following main components:
1410

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
1922

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
2324

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
2932

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
3334

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
3736

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).
3938

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
4443

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
4845

49-
### Class Descriptions:
46+
Handles user authentication to access the password manager.
5047

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
5552

56-
### Future Enhancements:
53+
### PasswordManager.java
5754

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

Comments
 (0)