Skip to content

danielkosgei/detergen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

detergen

Go Version License

A deterministic password generator TUI (Terminal User Interface) that creates strong, reproducible passwords using Argon2id hashing.

Overview

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

Installation

From Releases (Recommended)

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/dg

Windows:

Download dg-windows-amd64.exe and add it to your PATH, or run it directly.

Usage

Simply run the application to launch the interactive TUI:

dg

The 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)

Navigation

  • 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

Examples

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.

How It Works

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:

  1. Combine the base word and salt into a single input
  2. Hash the input using Argon2id with a fixed internal salt (detergen-v1)
  3. Use the hash bytes to select characters from the character set
  4. Guarantee at least one uppercase, one lowercase, one digit, and one special character
  5. 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

Development

# Format code
make fmt

# Run vet
make vet

# Build
make build

# Run tests
make test

# Clean build artifacts
make clean

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.


About

Deterministic password generator

Topics

Resources

License

Stars

Watchers

Forks