The KJB Password Generator uses words from the King James Bible to generate an xkcd style password.
Using Composer
Versions prior to 1.0.2
will cause a stream error due to an improper path
name.
- Add
spitzgoby/kjbpw
tocomposer.json
requirements section
"require": {
"spitzgoby/kjbpw": ">= 1.0.2"
}
- Run
composer install
The password generator can be invoked statically using default options
// Use password generator with default options
use KJBPasswordGenerator\PasswordGenerator as kjbpw;
$password = kjbpw::generatePassword();
echo $password;
// Sample Output: grey-ministering-shoelatchet
Alternatively, an array of options can be passed to alter the generation
// Use password generator with word count and symbol options
use KJBPasswordGenerator\PasswordGenerator as kjbpw;
$options = [kjbpw::OPTION_WORD_COUNT => 3,
kjbpw::OPTION_USE_SYMBOL => '!'];
$password = kjbpw::generatePassword($options);
echo $password;
// Sample Output: Shelemiah-father-Sibbechai!
The $options
array should be composed of valid key/value pairs as defined by
the KJBPasswordGenerator\PasswordGenerator::OPTION_{option_name}
constants. Any
unrecognized keys or invalid values will be ignored and replaced by the
defaults.
Available option keys include:
OPTION_WORD_COUNT
=> Default is4
Determines the number of random words to be pulled from the King James Bible.OPTION_USE_SYMBOL
=> Default isfalse
Can be a boolean or string value. by the default.- boolean:
DEFAULT_SYMBOL
(currently an @ symbol) value will be appended to the password. - string: the given string will be appended to the end of the password.
- boolean:
OPTION_USE_NUMBER
=> Default isfalse
Can be a boolean, integer, or string value.- boolean: A random integer between 0-9 will be appended to the password.
- integer: The given integer will be appended to the password.
- string: The string must contain only decimal digits. If so it will be appended to the end of the password.
OPTION_USE_HYPHENS
=> Default istrue
Should only be a boolean value. This determines whether the randomly selected words should be separated by hyphens to improve readability and memorability.