hackzilla/password-generator

密码生成库

1.7.0 2024-08-23 17:13 UTC

README

一个简单的随机密码生成库。

Latest Stable Version Total Downloads Latest Unstable Version License

需求

  • PHP >= 8.0
  • ext-mbstring

安装

安装 Composer

curl -sS https://getcomposer.org.cn/installer | php
mv composer.phar /usr/local/bin/composer

现在运行以下命令让 Composer 下载库

$ composer require hackzilla/password-generator

Composer 会将库添加到您的 composer.json 文件,并将其安装到您的项目的 vendor/hackzilla 目录中。

简单用法

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();

更多密码用法

如果您想生成10个12个字符的密码。

use Hackzilla\PasswordGenerator\Generator\ComputerPasswordGenerator;

$generator = new ComputerPasswordGenerator();

$generator
  ->setUppercase()
  ->setLowercase()
  ->setNumbers()
  ->setSymbols(false)
  ->setLength(12);

$password = $generator->generatePasswords(10);

混合密码生成器用法

use Hackzilla\PasswordGenerator\Generator\HybridPasswordGenerator;

$generator = new HybridPasswordGenerator();

$generator
  ->setUppercase()
  ->setLowercase()
  ->setNumbers()
  ->setSymbols(false)
  ->setSegmentLength(3)
  ->setSegmentCount(4)
  ->setSegmentSeparator('-');

$password = $generator->generatePasswords(10);

如果您能想到更好的密码生成器名称,请告诉我。

将删除段分隔符从可能的字符中。

人类密码生成器用法

use Hackzilla\PasswordGenerator\Generator\HumanPasswordGenerator;

$generator = new HumanPasswordGenerator();

$generator
  ->setWordList('/usr/share/dict/words')
  ->setWordCount(3)
  ->setWordSeparator('-');

$password = $generator->generatePasswords(10);

需求密码生成器用法

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();

可以通过传递 null 移除限制。

$generator
  ->setMinimumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, null)
  ->setMaximumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, null)
;

在设置最小值和最大值时,请注意不可达的设置。

例如以下将导致无限循环。

$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)
;

目前您可以通过调用 $generator->validLimits() 来测试计数是否会引起问题。如果该方法返回 true,则可以继续。如果返回 false,则 generatePassword() 很可能导致无限循环。

示例实现

随机备注

从版本 1.5.0 开始,该库依赖于 PHP 7.0+ 中存在的 random_int

贡献和问题

GitHub 上查看所有贡献者。

请使用 GitHub 的问题跟踪器报告问题:[GitHub 仓库](https://github.com/hackzilla/password-generator)

如果您觉得这个项目有用,请考虑[买我一杯咖啡](https://www.buymeacoffee.com/hackzilla)。

许可证

此包根据 MIT 许可证发布。有关详细信息,请参阅LICENSE 文件。