* The order of characters in this generated password itself is then shuffled using `crypto/rand` as well.
* This is done for every single password generated.
Invocation argument/flag defaults can be specified by the variable name in `[square brackets]`. e.g. the following in your `~/.bashrc`, for instance, on Linux:
```text
export PWGEN_XLEN=32
export PWGEN_NOSYM=1
```
will by default always generate 32-character-long passwords that do not contain symbols.
WIP:
It will also offers various hashing of the generated password(s) and a separate tool (`pwverify`) to verify a password against a hash.
All invocation options:
```
Usage:
pwgen [OPTIONS]
Application Options:
-a, --disable-alpha If specified, do NOT include the Alphabetical (letter) charset.
-n, --disable-num If specified, do NOT include the Numerical (number) charset.
-s, --disable-symbols If specified, do NOT include the Simple Symbols charset.
-S, --enable-extended-symbols If specified, include the Extended Symbols charset (these characters may cause issues in some applications).
-u, --count-upper= The number of minimum uppercase characters. If not specified, this is random (if in the charset).
-U, --count-lower= The number of minimum lowercase characters. If not specified, this is random (if in the charset).
-N, --count-numbers= The number of minimum number characters. If not specified, this is random (if in the charset).
-y, --count-symbols= The number of minimum simple symbol characters. If not specified, this is random (if in the charset).
-Y, --count-extended= The number of minimum extended symbol characters. If not specified, this is random (if in the charset).
-d, --disable-chars= If specified, these chars should be explicitly excluded from the charset(s). Can be specified multiple times with multiple chars per switch.
-e, --explicit-chars= If specified, ignore all charset selection and only use these characters to select from. Can be specified multiple times.
-l, --min-length= The minimum length for passwords; use 0 for no minimum limit. Set this to the same as -L/--max-length to use a fixed length. Must be <= -L/--max-length. (default: 16)
-a, --disable-alpha If specified, do NOT include the Alphabetical (letter) charset. [$PWGEN_NOALPHA]
-n, --disable-num If specified, do NOT include the Numerical (number) charset. [$PWGEN_NONUM]
-s, --disable-symbols If specified, do NOT include the Simple Symbols charset. [$PWGEN_NOSYM]
-S, --enable-extended-symbols If specified, include the Extended Symbols charset (these characters may cause issues in some applications). [$PWGEN_XSYMS]
-u, --count-upper= The number of minimum uppercase characters. If not specified, this is random (if in the charset). [$PWGEN_UPPER]
-U, --count-lower= The number of minimum lowercase characters. If not specified, this is random (if in the charset). [$PWGEN_LOWER]
-N, --count-numbers= The number of minimum number characters. If not specified, this is random (if in the charset). [$PWGEN_NUMNUMS]
-y, --count-symbols= The number of minimum simple symbol characters. If not specified, this is random (if in the charset). [$PWGEN_NUMSYMS]
-Y, --count-extended= The number of minimum extended symbol characters. If not specified, this is random (if in the charset). [$PWGEN_NUMXSYMS]
-d, --disable-chars= If specified, these chars should be explicitly excluded from the charset(s). Can be specified multiple times with multiple chars per switch. [$PWGEN_NOCHARS]
-e, --explicit-chars= If specified, ignore all charset selection and only use these characters to select from. Can be specified multiple times. [$PWGEN_XCHARS]
-l, --min-length= The minimum length for passwords; use 0 for no minimum limit. Set this to the same as -L/--max-length to use a fixed length. Must be <= -L/--max-length. (default: 16) [$PWGEN_MIN]
-L, --max-length= The maximum length for passwords; use 0 for no maximum limit (this is hard-capped to 256 for performance reasons). Set this to the same as -l/--min-length for a fixed length. Must be >= -l/--min-length.
(default: 64)
-c, --count= The number of passwords to generate. (default: 1)
(default: 64) [$PWGEN_MAX]
-x, --explicit-length= If specified, ignore -l/--min-length and -L/--max-length and set both to this length. [$PWGEN_XLEN]
-c, --count= The number of passwords to generate. (default: 1) [$PWGEN_CNT]
-f, --format=[json|yaml|xml] If specified, format the generated passwords in JSON (default), YAML, or XML. [$PWGEN_FMT]
NoAlpha bool `short:"a" long:"disable-alpha" description:"If specified, do NOT include the Alphabetical (letter) charset."`
NoNum bool `short:"n" long:"disable-num" description:"If specified, do NOT include the Numerical (number) charset."`
NoSymbols bool `short:"s" long:"disable-symbols" description:"If specified, do NOT include the Simple Symbols charset."`
ExtendSymbols bool `short:"S" long:"enable-extended-symbols" description:"If specified, include the Extended Symbols charset (these characters may cause issues in some applications)."`
NumUpper uint `short:"u" long:"count-upper" description:"The number of minimum uppercase characters. If not specified, this is random (if in the charset)."`
NumLower uint `short:"U" long:"count-lower" description:"The number of minimum lowercase characters. If not specified, this is random (if in the charset)."`
NumNumbers uint `short:"N" long:"count-numbers" description:"The number of minimum number characters. If not specified, this is random (if in the charset)."`
NumSymbols uint `short:"y" long:"count-symbols" description:"The number of minimum simple symbol characters. If not specified, this is random (if in the charset)."`
NumExtended uint `short:"Y" long:"count-extended" description:"The number of minimum extended symbol characters. If not specified, this is random (if in the charset)."`
DisableChars []string `short:"d" long:"disable-chars" description:"If specified, these chars should be explicitly excluded from the charset(s). Can be specified multiple times with multiple chars per switch."`
ExplicitChars []string `short:"e" long:"explicit-chars" description:"If specified, ignore all charset selection and only use these characters to select from. Can be specified multiple times."`
MinLen uint `short:"l" long:"min-length" default:"16" description:"The minimum length for passwords; use 0 for no minimum limit. Set this to the same as -L/--max-length to use a fixed length. Must be <= -L/--max-length."`
MaxLen uint `short:"L" long:"max-length" default:"64" description:"The maximum length for passwords; use 0 for no maximum limit (this is hard-capped to 256 for performance reasons). Set this to the same as -l/--min-length for a fixed length. Must be >= -l/--min-length."`
Count uint `short:"c" long:"count" default:"1" description:"The number of passwords to generate."`
/*
ListHashes bool `short:"z" long:"list-hashes" description:"If specified, list supported hashes and exit."`
Hashes []string `env:"PWGEN_HASHES" env-delim:"," short:"Z" long:"hash-algo" optional:"1" optional-value:"all" description:"Specify explicit hash algorithm(s). Can be specified multiple times. If this option is specified but no algorithms are provided, all hashes will be generated."`
*/
NoAlpha bool `env:"PWGEN_NOALPHA" short:"a" long:"disable-alpha" description:"If specified, do NOT include the Alphabetical (letter) charset."`
NoNum bool `env:"PWGEN_NONUM" short:"n" long:"disable-num" description:"If specified, do NOT include the Numerical (number) charset."`
NoSymbols bool `env:"PWGEN_NOSYM" short:"s" long:"disable-symbols" description:"If specified, do NOT include the Simple Symbols charset."`
ExtendSymbols bool `env:"PWGEN_XSYMS" short:"S" long:"enable-extended-symbols" description:"If specified, include the Extended Symbols charset (these characters may cause issues in some applications)."`
NumUpper uint `env:"PWGEN_UPPER" short:"u" long:"count-upper" description:"The number of minimum uppercase characters. If not specified, this is random (if in the charset)."`
NumLower uint `env:"PWGEN_LOWER" short:"U" long:"count-lower" description:"The number of minimum lowercase characters. If not specified, this is random (if in the charset)."`
NumNumbers uint `env:"PWGEN_NUMNUMS" short:"N" long:"count-numbers" description:"The number of minimum number characters. If not specified, this is random (if in the charset)."`
NumSymbols uint `env:"PWGEN_NUMSYMS" short:"y" long:"count-symbols" description:"The number of minimum simple symbol characters. If not specified, this is random (if in the charset)."`
NumExtended uint `env:"PWGEN_NUMXSYMS" short:"Y" long:"count-extended" description:"The number of minimum extended symbol characters. If not specified, this is random (if in the charset)."`
DisableChars []string `env:"PWGEN_NOCHARS" short:"d" long:"disable-chars" description:"If specified, these chars should be explicitly excluded from the charset(s). Can be specified multiple times with multiple chars per switch."`
ExplicitChars []string `env:"PWGEN_XCHARS" short:"e" long:"explicit-chars" description:"If specified, ignore all charset selection and only use these characters to select from. Can be specified multiple times."`
MinLen uint `env:"PWGEN_MIN" short:"l" long:"min-length" default:"16" description:"The minimum length for passwords; use 0 for no minimum limit. Set this to the same as -L/--max-length to use a fixed length. Must be <= -L/--max-length."`
MaxLen uint `env:"PWGEN_MAX" short:"L" long:"max-length" default:"64" description:"The maximum length for passwords; use 0 for no maximum limit (this is hard-capped to 256 for performance reasons). Set this to the same as -l/--min-length for a fixed length. Must be >= -l/--min-length."`
ExplicitLen uint `env:"PWGEN_XLEN" short:"x" long:"explicit-length" description:"If specified, ignore -l/--min-length and -L/--max-length and set both to this length."`
Count uint `env:"PWGEN_CNT" short:"c" long:"count" default:"1" description:"The number of passwords to generate."`
Format string `env:"PWGEN_FMT" short:"f" long:"format" optional:"1" optional-value:"json" choice:"json" choice:"yaml" choice:"xml" description:"If specified, format the generated passwords in JSON (default), YAML, or XML."`