This project has migrated to Codeberg for better alignment with open-source values.
👉 New Location: codeberg.org/ilius/repassgen
This program generates fully customizable random passwords, with almost any desired pattern or length, using the same syntax as Regular Expressions for character classes (POSIX-style), repetition ({N} or {M,N}) and capturing groups ((...)).
See examples for clarity.
Run:
go get github.com/ilius/repassgenThis will compile and then copy repassgen executable file to $GOPATH/bin/ directory.
If you just want to compile without installing it
go get -d github.com/ilius/repassgen
cd $GOPATH/src/github.com/ilius/repassgen
go buildThen repassgen binary file will be created in current directory.
- Simple repetition:
{N} - Range repetition:
{M,N} - Manual character range, like
[a-z1-579] - Repeatable groups with
(...){N}, like([a-z]{2}[1-9]){3} -
[:alnum:]Alphanumeric characters -
[:alpha:]Alphabetic characters -
[:word:],[:w:]or\w: Word characters (letters, numbers and underscores, same as[a-zA-Z0-9_]) -
[:upper:]Uppercase letters -
[:lower:]Lowercase letters -
[:graph:]Visible characters -
[:print:]Visible characters and spaces (anything except control characters) -
[:digit:]or\dDigits -
[:xdigit:]Hexadecimal digits -
[:punct:]Punctuation (and symbols). -
[:space:]All whitespace characters, including line breaks -
[:blank:]Space and tab -
[:cntrl:]Control characters -
[:ascii:]ASCII characters - Unicode code points, like
[\u00e0-\u00ef]{5} - Group references
\1,\2, etc
- Combined multiple named/manual character classes, for example:
[:digit:a-m][:digit::alpha:]=[:alnum:]
-
[:b32:]Crockford's Base32 alphabet (lowercase) -
[:B32:]Crockford's Base32 alphabet (uppercase) -
[:B32STD:]Standard Base32 alphabet (uppercase) -
[:b64:]Standard Base64 alphabet -
[:b64url:]URL-safe Base64 alphabet -
$base64(...)Base64 encode function (input is hex-encoded) -
$base64url(...)URL-safe Base64 encode function (input is hex-encoded) -
$base32(...)Crockford's Base32 encode function (lowercase) (input is hex-encoded) -
$BASE32(...)Crockford's Base32 encode function (uppercase) (input is hex-encoded) -
$base32std(...)Standard Base32 encode function (uppercase, with no padding) (input is hex-encoded) -
$hex(...)Hex encode function (lowercase) -
$HEX(...)Hex encode function (uppercase) - Show entropy of pattern
- Use
repassgen -entropy 'PATTERN'command - Indicates strength of generated passwords, the higher the better
- We recommand at least 47 bits (equal to 8 alphanumeric:
[:alnum:]{8}) - Entropy of pattern is more important than entropy of password, if you re-use patterns
- Use
-
$hex2dec(...)Convert hexadecimal number to decimal number -
$escape(...)Escape unicode characters, non-printable characters and double quote -
$?(...)Randomly include or omit the string/pattern (%50 chance, adds 1 bit to entropy) -
$bip39word(N)Generate N words from BIP-39 English mnemonic words -
$bip39encode(...)Encode hex-encoded bytes into some BIP-39 English mnemonic words -
$date(2000,2020,-)Generate a random date in the given year range -
$space(...)Adds spaces between each two characters of string (generated from given pattern) -
$expand(|...)Adds|(for example) between each two characters (similar to$space) -
$rjust(PATTERN,N,X)Justify to right,Nis width (N>=1),Xis the character to fill -
$ljust(PATTERN,N,X)Justify to left, similar to$rjust -
$center(PATTERN,N,X)Justify to center, similar to$rjust -
$pyhex(...)Convert hex-encoded bytes to Pythonbyteswith hex values (likeb'\x74\x65\x73\x74') -
$romaji(...)Converts Japanese hiragana/katakana string to Latin
-
Alphanumeric password with length 12
$ repassgen '[:alnum:]{12}' q8nrqhPQFNqj -
Alphabetic password with length 12
$ repassgen '[:alpha:]{12}' wiADcFkhpjsk -
Lowercase alphabetic password with length 16
$ repassgen '[:lower:]{16}' rnposblbuduotibe -
Uppercase alphabetic password with length 16
$ repassgen '[:upper:]{16}' TQZZJHKQRKETOFNZ -
Numeric password with length 8
$ repassgen '[:digit:]{8}' 47036294 -
A custom combination: 7 uppercase, space, 7 lowercase, space, 2 digits
$ repassgen '[:upper:]{7} [:lower:]{7} [:digit:]{2}' UOHMGVM toubgvs 73 -
Password with length 12, using only Base64 characters
$ repassgen '[:b64:]{12}' 6+BA71WCy90I -
Password with length 12, using only URL-safe Base64 characters
$ repassgen '[:b64url:]{12}' j15w_qTncikR -
Password with length 16, using only Crockford's Base32 characters (lowercase)
$ repassgen '[:b32:]{16}' zmt87n9hpcd2w28h -
Password with length 16, using only Crockford's Base32 characters (uppercase)
$ repassgen '[:B32:]{16}' HJ48VSR4Y0DHQ9EV -
Password with length 16, using Crockford's Base32 characters and punctuations
$ repassgen '[:b32::punct:]{16}' 20s:z.5mbwws474y -
Specify character range manually: lowercase alphebetic with length 16
$ repassgen '[a-z]{16}' qefqiocrabpiaags -
Specify character range manually: alphanumeric with length 12
$ repassgen '[a-zA-Z0-9]{12}' XcwDAagzMlwv -
Include non-random characters in the password (here: Test / , .)
$ repassgen 'Test-[:alpha:]{4}/[:alpha:]{4},[:alpha:]{4}.[:alpha:]{4}' Test-Jcis/uLwq,SazR.CEFJ -
A 16-digit number similar to a credit card number
repassgen '[:digit:]{4}-[:digit:]{4}-[:digit:]{4}-[:digit:]{4}' 3996-9634-1459-0656 -
Alphabetic password with a length between 12 and 16 characters
$ repassgen '[:alpha:]{12,16}' uamePKmuUUUcI -
Gerenate random bytes, then run Base64 encode function
$ repassgen '$base64($byte(){12})' bsOuN8KuRsOFw5jClkDDjMOrFA== -
Gerenate random bytes, then run Crockford's Base32 encode function
$ repassgen '$base32($byte(){12})' c51e2kk1aafe3jngm3gxqrazpwqva -
Use
-or[or]inside[...]$ repassgen '[.\- ]{50}' - .-.-- --.------- --.. -.---.-.. -- --..-.. .---$ repassgen '[a-z\[\]\-]{20}' nylhjcdq-qcaajvpcxuo -
Use whitespace characters like newline or tab (inside or outside
[...])$ repassgen '[a-z\t]{5}\t[a-z\t]{5}\n[a-z\t]{10}' caelk zccqm zpbgjba pm -
Generate 12 random mnemonic words from BIP-39 English words
$ repassgen '$bip39word(12)' cinnamon purity funny pigeon arrive equal foil alter life accident bar roast -
Generate 16 random bytes, then encode it to BIP-39 English mnemonic words
$ repassgen '$bip39encode($byte(){16})' useful come fall plunge breeze side skill another boil expose essence about