Thanks to visit codestin.com
Credit goes to github.com

Skip to content

seerainer/SecPwdMan

Repository files navigation

🔐 SecPwdMan

Logo

SecPwdMan is a cross-platform, open-source password manager that stores all your passwords securely encrypted with a single master password. It is designed for privacy, security, and usability, supporting advanced cryptography, and modern desktop features.

Build Status CodeQL
Release License


Table of Contents


Features

  • Encryption: AES/GCM (256-bit) or ChaCha20-Poly1305 (256-bit)
  • Key Derivation: Argon2 (recommended), scrypt or PBKDF2
  • Password Strength Measurement: Integrated zxcvbn4j
  • Random Password Generator: Customizable, supports custom characters
  • Automatic Lock: Locks after inactivity
  • Deflate Compression: For password file storage
  • Secure File Deletion: Shreds exported files
  • Screenshot Protection: Prevents screen capture on Windows
  • Cross-Platform: Linux, Mac, Windows
  • Modern UI: Built with Eclipse SWT
  • Import/Export: CSV support
  • Configurable Table & Dialog Fonts
  • Theming: Dark mode
  • Unit & Integration Tests: Comprehensive test coverage
  • Secure Native Memory: All sensitive data (passwords, keys) are handled using off-heap native memory (Java Foreign Memory API) via the SecureMemory utility, ensuring automatic zeroing and minimizing heap exposure.

Screenshot

SecPwdMan Screenshot


Installation

Prerequisites

  • Java 25 (GraalVM recommended for native image)
  • Gradle 8.14+
  • Git

Clone the Repository

git clone https://github.com/seerainer/SecPwdMan.git
cd SecPwdMan

Build & Run

./gradlew build
./gradlew run

Native Image (GraalVM)

./gradlew nativeCompile
./build/native/nativeCompile/SecPwdMan

Usage

Start the Application

./gradlew run

Main Features

  • Add, edit and delete password entries
  • Organize passwords in groups
  • Generate strong random passwords
  • Import/export as CSV
  • Change master password and key derivation settings
  • Lock/unlock the application

Command-Line Arguments

  • You can pass a password file as an argument to open it directly:
    ./gradlew run --args='my-passwords.json'

Configuration

  • All configuration and log files are stored in your home directory
  • Settings include:
    • Key derivation function (Argon2, scrypt, PBKDF2)
    • Encryption algorithm (AES, ChaCha20)
    • Auto-lock timeout
    • Table and dialog font
    • Window size and position

Security

  • Encryption: All passwords are encrypted with a strong symmetric cipher
  • Key Derivation: Uses Argon2, scrypt or PBKDF2 for master password transformation
  • SecureRandom: Cryptographically secure random number generation
  • Screenshot Protection: Prevents screen capture on Windows
  • Secure File Deletion: Shreds exported files to prevent recovery
  • Password Strength: Integrated zxcvbn4j for strength feedback
  • No Cloud Storage: All data is local; no remote sync

Testing

  • Unit Tests:
    • Run with: ./gradlew unitTest
  • Integration Tests:
    • Run with: ./gradlew integrationTest
  • All Tests:
    • Run with: ./gradlew allTests
  • Test Reports:
    • See build/reports/tests/

Build

Build Tasks

  • ./gradlew build — Compile and package
  • ./gradlew run — Run the application
  • ./gradlew nativeCompile — Build native image (GraalVM)
  • ./gradlew unitTest — Run unit tests
  • ./gradlew integrationTest — Run integration tests

Directory Structure

SecPwdMan/
├── src/
│   ├── main/java/io/github/seerainer/secpwdman/   # Source code
│   ├── main/resources/                            # Resource files
│   ├── test/java/io/github/seerainer/secpwdman/   # Test code
│   ├── test/resources/                            # Test resources
├── build.gradle                                   # Build configuration
├── README.md                                      # This file
├── CHANGELOG.md                                   # Changelog

Dependencies


Contributing

Contributions are welcome! Please:

  • Open issues for bugs, feature requests or questions
  • Fork the repository and submit pull requests

License

SecPwdMan is licensed under the GNU General Public License v3.0. See LICENSE.txt for details.

Packages

No packages published

Contributors 2

  •  
  •  

Languages