repassgen

A very flexible random password generator based on a regexp-like pattern, written in Golang

LGPL-3.0 License

Stars
26
repassgen - Release 2022.09.07 Latest Release

Published by ilius about 2 years ago

Changes since last release (2021.10.21)

Bug fixes and security improvements

  • Fix panic when pattern ends with a single backslash
  • Alteration: use the minimum entropy of alteration parts for overall pattern entropy
    • For example repassgen -entropy '([a-z]{8}|[0-9]{8})' showed entropy 27 or 38 depending on which of two patterns ([a-z]{8} or [0-9]{8}) were chosen. Now it always shows 27 as entropy.
    • Why? Because shown entropy is for the pattern, not the password, so it should be always the same. The weakest part of alteration can make the pattern vulnerable if you don't pay enough attention to it.
    • It's generally not a good idea to have largely-varied-entropy patterns as part of alteration.

Breaking changes

  • Add $byte() and $BYTE() functions which return hex
  • Remove [:byte:] character class (which returned binary and was a problem in text context)
  • Change all encode functions to take hex-encoded input
    • $base64
    • $base64url
    • $base32
    • $BASE32
    • $base32std
    • $bip39encode

New features

  • Add $pyhex function (takes hex-encoded input like above)

Improvements and testing

  • Safe integer type casting, and change some integer types for safety and performance
  • Fix a few flaky tests, add new tests, improve coverage, better validation
  • Lots of refactoring

Changes in dependencies

  • Update and tidy dependencies
  • Remove github.com/spf13/cast from dependencies
repassgen - Release 2021.10.21

Published by ilius about 3 years ago

Changes since last release (2021.01.22)

  • Remove duplicate characters from [:punct:] character set
  • Add support for alteration inside a group, like (a|bc|123)
  • Add function $hex2dec to convert hex number to decimal number
  • Refactoring
  • Better error messages
  • Better unit testing
repassgen - Release 2021.01.22

Published by ilius over 3 years ago

Changes since last release (2020.01.05)

  • A lot of improvements in error messages
  • A lot of refactoring
  • Better unit testing
  • New Features
    • Unicode code points, like [\u00e0-\u00ef]{5} and \U0001F603
    • Group references \1, \2, etc
      • For example to repeat a generated string in a function
    • $escape(...) Escape unicode characters, non-printable characters and double quote
    • $?(...) Randomly include or omit the string/pattern (%50 chance, adds 1 bit to entropy)
    • $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
    • $romaji(...) Converts Japanese hiragana/katakana string to Latin
    • $shuffle(...) Shuffle characters of string or generated password.
      • We can not calculate how much entropy it adds for now. So it won't add to entropy.
repassgen - Bug fix release (2020.01.05)

Published by ilius almost 5 years ago

  • Remove duplicate characters inside []
    • Effected randomness (added weight on duplicate characters)
    • Showed wrong entropy (with -entropy flag)
repassgen - Release 2019.05.31

Published by ilius over 5 years ago

Initial release
All features are listed in README.md

Package Rankings
Top 8.17% on Proxy.golang.org