密码生成服务

v1.3.2 2019-05-27 14:50 UTC

This package is auto-updated.

Last update: 2024-08-25 00:24:28 UTC


README

Codacy Badge Scrutinizer Code Quality Build Status Code Coverage Latest Version on Packagist

DeGraciaMathieu/Riddler

密码生成服务

安装

在下面的控制台中运行命令以将包下载到您的项目中

composer require degraciamathieu/riddler

密码生成使用方法

密码是一组由字典和出现次数组成的一或多个标准。

可用的字典有

  • AccentedLetter
  • AccentedUppercaseLetter
  • Digit
  • Letter
  • SpecialCharacter
  • UppercaseLetter

可用的出现次数

  • Strict
  • Between
  • None
require 'vendor\autoload.php';

use DeGraciaMathieu\Riddler\Password;
use DeGraciaMathieu\Riddler\Dictionaries;
use DeGraciaMathieu\Riddler\Occurrences;

$password = new Password();
$password->addCriteria(new Dictionaries\Digit(), new Occurrences\Strict(5));
$password->addCriteria(new Dictionaries\Letter(), new Occurrences\Between(3, 6));
$password->generate();

为了更快地构建密码,可以使用预定义标准集,并使用格式。

可用的格式

  • LongDigit
  • MixedComplex
  • MixedStrong
  • SmallAlphanumeric
  • StrongAlphanumeric
require 'vendor\autoload.php';

use DeGraciaMathieu\Riddler\Password;
use DeGraciaMathieu\Riddler\Formats;

$password = new Password();
$password->addFormat(new Formats\StrongAlphanumeric());
$password->generate();

可以创建自己的类格式,实现DeGraciaMathieu\Riddler\Contracts\Format接口。

检查密码得分

还可以使用Score方法检查密码是否匹配所需的标准列表。

$password = new Password;
$password->addCriteria(new Digit(), new Strict(3));
$password->addCriteria(new Letter(), new Between(3, 5));
$password->score('123abcd'); // 100

$password = new Password;
$password->addCriteria(new Digit(), new Strict(3));
$password->addCriteria(new Letter(), new Between(3, 5));
$password->score('123a'); // 50

Score方法的价值是验证标准的百分比。

检查密码是否通过

$password = new Password;
$password->addCriteria(new Digit(), new Strict(3));
$password->addCriteria(new Letter(), new Between(3, 5));
$password->passed('123a');

// [
//     ['name' => 'digit_strict_3', 'passed' => true],
//     ['name' => 'letter_between_3_5', 'passed' => false],
// ]
$password = new Password;
$password->addNamedCriteria('MyName', new Digit(), new Strict(3));
$password->passed('123');

// [
//     ['name' => 'MyName', 'passed' => true],
// ]

示例

经典

$password = new Password;
$password->addCriteria(new Digit(), new Strict(10));
$password->generate(); // "4731412968"

$password = new Password;
$password->addCriteria(new Letter(), new Strict(20));
$password->generate(); // "tugmdzkgohnnkfrxuqns"

$password = new Password;
$password->addCriteria(new UppercaseLetter(), new Strict(20));
$password->generate(); // "JDXIRCEBWDPZLCWIJNYZ"

$password = new Password;
$password->addCriteria(new UppercaseLetter(), new Between(5, 7));
$password->addCriteria(new Letter(), new Between(5, 7));
$password->generate(); // "xIXPstuqTZmb"

$password = new Password;
$password->addCriteria(new SpecialCharacter(), new Strict(15));
$password->generate(); // "#^_=%§][:@_]^%="

$password = new Password;
$password->addCriteria(new AccentedLetter(), new Strict(15));
$password->generate(); // "üãöîâüîüûàóäùéú"

$password = new Password;
$password->addCriteria(new AccentedUppercaseLetter(), new Strict(15));
$password->generate(); // "ÂÚÏÝÒÌÀÂÜÝÛËÍÊÌ"

$password = new Password;
$password->addCriteria(new Digit(), new Strict(5));
$password->addCriteria(new Letter(), new Strict(5));
$password->addCriteria(new SpecialCharacter(), new Between(5, 10));
$password->generate(); // "!186u;n&~§3r7hb|~?"

$password = new Password;
$password->addCriteria(new Digit(), new Between(5, 7));
$password->addCriteria(new Letter(), new Between(5, 7));
$password->addCriteria(new UppercaseLetter(), new Between(5, 7));
$password->addCriteria(new AccentedLetter(), new Between(5, 7));
$password->addCriteria(new SpecialCharacter(), new Between(5, 7));
$password->generate(); // "uELòp§iO°L§7b~â]3ûë7èm96A"

格式

$password = new Password();
$password->addFormat(new Formats\LongDigit());
$password->generate(); // "075197457894437657185665450123"

$password = new Password();
$password->addFormat(new Formats\SmallAlphanumeric());
$password->generate(); // "mA5M6ap167gRTeE"

$password = new Password();
$password->addFormat(new Formats\StrongAlphanumeric());
$password->generate(); // "492OHwdJEdDT5Lb89zhY9c26j4XhmX"

$password = new Password();
$password->addFormat(new Formats\MixedStrong());
$password->generate(); // "41súdSXWHV65k2G0lr0õèñzåY"

$password = new Password();
$password->addFormat(new Formats\MixedComplex());
$password->generate(); // "Äûc[%ÀÁkWï_1V8k3uw*3§ÔEaAÍ+5§ôåûWYI6äÕ7"