Crypt-HSXKPasswd-v3.1.1 BETA 1
Pre-releaseThe first beta release of the re-designed and re-named module. With this release the Perl module has been re-named from simply XKPasswd
, to the properly name-spaced Crypt::HSXKPasswd
.
The reason for the change of name from XKPasswd to HSXKPasswd is to better reflect the fact that this module combines ideas from both the famous XKCD password comic, and Steve Gibson's Password Haystacks. The old name implied the module only implemented traditional XKCD-style passwords, which under-sells the module's capabilities.
This version has been packaged for future distribution on CPAN, and contains many new features, most notably:
- Both the functional interface (
hsxkpasswd()
) and the constructor have been changed to using named parameters to make it easier to instantiate objects with more customisations. - The config can now be passed as a JSON string (the format produced in the Save/Load tab on the www.xkpasswd.net website), making it easy to tweak your config in the web GUI, then use it in your scripts.
- The module is now fully unicode aware, so it can finally handle accented letters, and hence, languages other than English!
- The module now ships with English, German, French, Spanish, Italian and Portuguese dictionaries built in.
- The dictionary interface has been completely re-designed, allowing for more flexible word sources in the future - simply extend
Crypt::HSXKPasswd::Dictionary
and implement the functionword_list()
. - Random number generation (RNG) has been completely re-designed, and there is now built-in support for better sources of randomness than
rand()
, including support for/dev/urandom
,Math::Random::Secure
, andData::Entropy::Algorythms
. By default, the best RNG available on the system will be used, and a warning will be issued if the module has to fall back to usingrand()
. - Custom RNGs can now be created by extending
Crypt::HSXKPasswd::RNG
and implementing the functionrandom_numbers()
Installation instructions can be found in the INSTALL
file, and detailed documentation in the README
file, both included in the release.