A deterministic password generator TUI (Terminal User Interface) that creates strong, reproducible passwords using Argon2id hashing.
detergen (short for deterministic generator) solves a common problem: remembering unique, strong passwords for every service without relying on password managers that store your secrets. Instead of storing passwords, detergen derives them deterministically from a base word and salt combination using the memory-hard Argon2id algorithm.
The same input will always produce the same output, meaning you can regenerate your password anytime—you just need to remember your base word and what salt you used (typically the service name).
Download the latest binary for your platform from the Releases page:
| Platform | Binary |
|---|---|
| Linux (x64) | dg-linux-amd64 |
| Linux (ARM64) | dg-linux-arm64 |
| macOS (Intel) | dg-darwin-amd64 |
| macOS (Apple Silicon) | dg-darwin-arm64 |
| Windows | dg-windows-amd64.exe |
Linux/macOS:
# Download (example for Linux x64)
curl -LO https://github.com/danielkosgei/detergen/releases/latest/download/dg-linux-amd64
# Make executable and move to PATH
chmod +x dg-linux-amd64
sudo mv dg-linux-amd64 /usr/local/bin/dgWindows:
Download dg-windows-amd64.exe and add it to your PATH, or run it directly.
Simply run the application to launch the interactive TUI:
dgThe TUI provides an intuitive interface with the following fields:
- Base Word (required): Your base word for password generation
- Salt (optional): Site/service name to create unique passwords (e.g.,
facebook,twitter) - Length: Password length (default: 12, minimum: 8, maximum: 128)
- Use Tab or Arrow keys (↑/↓) to navigate between fields
- Press Enter on the "Generate Password" button to create your password
- Press Ctrl+C or Esc to exit
Social Media:
- Base Word:
mysecret, Salt:facebook→ Generates a unique password for Facebook - Base Word:
mysecret, Salt:twitter→ Generates a different password for Twitter - Base Word:
mysecret, Salt:instagram→ Generates another unique password
Work Accounts:
- Base Word:
workpass, Salt:slack, Length:16 - Base Word:
workpass, Salt:jira, Length:16
Banking:
- Base Word:
bankpass, Salt:chase, Length:24
The same base word and salt combination will always produce the same password, allowing you to regenerate passwords without storing them.
detergen uses Argon2id, the winner of the 2015 Password Hashing Competition, to derive passwords. Argon2id combines the benefits of both Argon2d (resistant to GPU cracking) and Argon2i (resistant to side-channel attacks).
Parameters used:
- Time cost: 3 iterations
- Memory cost: 256 MB
- Parallelism: 4 threads
- Output: 64 bytes
Password generation process:
- Combine the base word and salt into a single input
- Hash the input using Argon2id with a fixed internal salt (
detergen-v1) - Use the hash bytes to select characters from the character set
- Guarantee at least one uppercase, one lowercase, one digit, and one special character
- Deterministically shuffle the result using additional hash bytes
This ensures:
- High computational cost for attackers trying to brute-force
- Consistent output for the same inputs
- Passwords that meet common complexity requirements
# Format code
make fmt
# Run vet
make vet
# Build
make build
# Run tests
make test
# Clean build artifacts
make cleanThis project is licensed under the Apache License 2.0 - see the LICENSE file for details.