- Notifications
You must be signed in to change notification settings - Fork0
Highly flexible random password generator based on a regexp-like pattern, written in Golang
License
ilius/repassgen
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This program generatesfully customizable random passwords, with almostany desired pattern or length, using the same syntax asRegular Expressions forcharacter classes (POSIX-style),repetition ({N}
or{M,N}
) andcapturing groups ((...)
).
Seeexamples for clarity.
Run:
go get github.com/ilius/repassgen
This will compile and then copyrepassgen
executable file to$GOPATH/bin/
directory.
If you just want to compile without installing it
go get -d github.com/ilius/repassgencd$GOPATH/src/github.com/ilius/repassgengo build
Thenrepassgen
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\d
Digits[: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)- Showentropy 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,N
is width (N>=1),X
is 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 Pythonbytes
with 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}'caelkzccqmzpbgjbapm
Generate 12 random mnemonic words fromBIP-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 toBIP-39 English mnemonic words
$ repassgen'$bip39encode($byte(){16})'useful come fall plunge breeze side skill another boil expose essence about
About
Highly flexible random password generator based on a regexp-like pattern, written in Golang