#generator #password

app rpgen

A password generator written in Rust

1 unstable release

0.1.1 Oct 21, 2022

#2202 in Command line utilities

MIT license

512 lines


Getting Started

You can get the latest version of PGen from the github actions artifacts or from one of these links: linux, windows, macos


From the command line you can use ./rpgen generate this will run PGen with the default rules and generate a new configuration file according to your operating system

Windows: {FOLDERID_RoamingAppData} # eg: C:\Users\{USERNAME}\AppData\Roaming
Linux: $HOME/.config # or $XDG_CONFIG_HOME
Mac: $HOME/Library/Preferences



    -a, --amount <AMOUNT>
            The number of passwords to generate (default: 3)

    -d, --digits-before <DIGITS_BEFORE>
            The number of digits before the words (default: 0)

    -D, --digits-after <DIGITS_AFTER>
            The number of digits after the words (default: 3)

            Enable debug logging

    -h, --help
            Print help information

    -m, --min-length <MIN_LENGTH>
            The minimum length of each word (default: 5, min: 3)

    -M, --max-length <MAX_LENGTH>
            The maximum length of each word (default: 7, max: 9)

    -r, --match-random-char
            Do not use the same random character for each separator rather than a new random each
            time (default: true)

    -s, --separator-char <SEPARATOR_CHAR>
            The character to use to separate the words (default: "RANDOM")

    -S, --separator-alphabet <SEPARATOR_ALPHABET>
            The array of characters as separators (default: "!@$%.&*-+=?:;")

    -t, --transform <TRANSFORM>
            What transformation mode to use, Options are [NONE, CAPITALISE, ALL_EXCEPT_FIRST,

    -V, --version
            Print version information

    -w, --words <WORDS>
            The number of words to generate for each password (default: 2)

    generate    Generate some new passwords.
    help        Print this message or the help of the given subcommand(s)

Configuration file

When using the configuration file not all values must be present, the default values will be used in their place.

Below you will find the default configuration file.

words = 2
min_length = 5
max_length = 7
transform = 'CAPITALISE'
separator_char = 'RANDOM'
separator_alphabet = '!@$%.&*-+=?:;'
match_random_char = true
digits_before = 0
digits_after = 3
amount = 3

Using a configuration file in another location

When running the generate subcommand you can specify a configuration file to use. This path will first be treated as an absolute path and if not found looked for in the current working directory.

Some examples of this would be:

./rpgen generate /home/racci/Documents/config.toml
./rpgen generate config.toml
./rpgen generate ../config.toml

Rule hierarchy

When running PGen rules will be assigned with the last checked value as the final value. Meaning that rules are assigned in an order of default, config file, supplied config file and finally cli arguments.

Running from a script

Instead of writing ./rpgen and whatever options you need, you can instead use a batch, powershell or shell file like these:

  • Shell script (Assuming you have rpgen in your path):
rpgen -w 10 -m 5 -r -t ALTERNATING -s RANDOM -S =-;. -d 5 -D 0 -a 50 generate ~/Documents/config
  • Powershell / Batch script
"C:\Users\Racci\Programs\PGen\pgen" generate "C:\Users\Racci\Programs\PGen\rules.toml"


~108K SLoC