A secure console-based password management solution—initially console-only, with planned UI and advanced feature improvements—that stores and encrypts your passwords using robust cryptographic algorithms.
📦 PasswordManager
├── 📂 Core # Core application logic
│ ├── IPasswordManager.cs - Main service interface
│ ├── PasswordManagerService.cs - Core implementation
│ ├── IEncryptionService.cs - Encryption contracts
│ ├── XorEncryptionService.cs - XOR+HMAC implementation
│ ├── IAuthenticationService.cs - Auth contracts
│ ├── SHA_1AuthenticationService.cs - SHA-1 implementation
├── 📂 Models # Data models
│ ├── PasswordEntry.cs - Password entry structure
├── 📂 Database # Database operations
│ ├── IDatabaseService.cs - DB contracts
│ ├── SQLiteDatabaseService.cs - SQLite implementation
├── 📂 UI # User interface
│ ├── IUserInterface.cs - UI contracts
│ ├── ConsoleUserInterface.cs - Console UI implementation
│ ├── ConsoleHelper.cs - UI utilities
│ ├── IInputValidator.cs - Validation contracts
│ ├── InputValidator.cs - Input validation
└── Program.cs # Entry point
- User Authentication with
SHA-1 Hashing
XOR
Encryption withHMAC-SHA256
- Multi-user (separate database per user)
- Strong Password Generator
- Robust handling for any unexpected input to ensure reliability and security.
- Password Entry Management
- Implements
SHA-1
hashing for master passwords to securely safeguard each user credentials in thier setion at the Password Manager.
- Enhance the
XOR cipher
withHMAC-SHA256
to securely encrypt each password before storing it in the database.
- Each user has a dedicated SQLite database, named after their email, which is loaded upon successful login. All stored passwords within the database are securely encrypted, ensuring robust privacy and security.
- .NET 6.0 SDK or later
- GIT
- Clone the repository
git clone https://github.com/yourusername/PasswordManager.git
cd PasswordManager
- Restore dependencies:
Restore dependencies:
- Run the application:
dotnet run
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name
- Implement your changes following existing patterns:
- Use interface-driven design
- Maintain separation between Core/UI/Database layers
- Test thoroughly
- Submit a Pull Request with description of changes