Password Generator Library
Simple library for generating random passwords., (*1)
, (*2)
Requirements
Installation
Install Composer, (*3)
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Now tell composer to download the library by running the command:, (*4)
``` bash
$ composer require hackzilla/password-generator, (*5)
Composer will add the library to your composer.json file and install it into your project's `vendor/hackzilla` directory.
## Simple Usage
```php
use Hackzilla\PasswordGenerator\Generator\ComputerPasswordGenerator;
$generator = new ComputerPasswordGenerator();
$generator
->setOptionValue(ComputerPasswordGenerator::OPTION_UPPER_CASE, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_LOWER_CASE, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_NUMBERS, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_SYMBOLS, false)
;
$password = $generator->generatePassword();
More Passwords Usage
If you want to generate 10 passwords that are 12 characters long., (*6)
use Hackzilla\PasswordGenerator\Generator\ComputerPasswordGenerator;
$generator = new ComputerPasswordGenerator();
$generator
->setUppercase()
->setLowercase()
->setNumbers()
->setSymbols(false)
->setLength(12);
$password = $generator->generatePasswords(10);
Hybrid Password Generator Usage
use Hackzilla\PasswordGenerator\Generator\HybridPasswordGenerator;
$generator = new HybridPasswordGenerator();
$generator
->setUppercase()
->setLowercase()
->setNumbers()
->setSymbols(false)
->setSegmentLength(3)
->setSegmentCount(4)
->setSegmentSeparator('-');
$password = $generator->generatePasswords(10);
If you can think of a better name for this password generator then let me know., (*7)
The segment separator will be remove from the possible characters., (*8)
Human Password Generator Usage
use Hackzilla\PasswordGenerator\Generator\HumanPasswordGenerator;
$generator = new HumanPasswordGenerator();
$generator
->setWordList('/usr/share/dict/words')
->setWordCount(3)
->setWordSeparator('-');
$password = $generator->generatePasswords(10);
Requirement Password Generator Usage
use Hackzilla\PasswordGenerator\Generator\RequirementPasswordGenerator;
$generator = new RequirementPasswordGenerator();
$generator
->setLength(16)
->setOptionValue(RequirementPasswordGenerator::OPTION_UPPER_CASE, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_LOWER_CASE, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_NUMBERS, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_SYMBOLS, true)
->setMinimumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_LOWER_CASE, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_NUMBERS, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_SYMBOLS, 2)
->setMaximumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_LOWER_CASE, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_NUMBERS, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_SYMBOLS, 8)
;
$password = $generator->generatePassword();
A limit can be removed by passing null
, (*9)
$generator
->setMinimumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, null)
->setMaximumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, null)
;
When setting the minimum and maximum values, be careful of unachievable settings., (*10)
For example the following will end up in an infinite loop., (*11)
$generator
->setLength(4)
->setOptionValue(RequirementPasswordGenerator::OPTION_UPPER_CASE, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_LOWER_CASE, false)
->setMinimumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, 5)
->setMaximumCount(RequirementPasswordGenerator::OPTION_LOWER_CASE, 1)
;
For the moment you can call $generator->validLimits()
to test whether the counts will cause problems.
If the method returns true, then you can proceed. If false, then generatePassword() will likely cause an infinite loop., (*12)
Example Implementations
- Password Generator App [https://github.com/hackzilla/password-generator-app]
- Password Generator Bundle [https://github.com/hackzilla/password-generator-bundle]
Random Note
Since version 1.5.0, the library depends on the presence of random_int which is found in PHP 7.0+, (*13)
Contributions and Issues
See all contributors on GitHub., (*14)
Please report issues using GitHub's issue tracker: GitHub Repo, (*15)
If you find this project useful, consider buying me a coffee., (*16)
License
This bundle is released under the MIT license. See the LICENSE file for details., (*17)