iiifx-production/password-generator

此包已被废弃且不再维护。未建议替代包。

简单的密码生成包

v0.2.0 2016-11-08 22:35 UTC

This package is not auto-updated.

Last update: 2021-02-04 11:11:43 UTC


README

一个简单的密码生成库,支持使用加密算法

Latest Version on Packagist Build Status Code Quality Code Coverage Software License Total Downloads

安装

使用 Composer

$ composer require "iiifx-production/password-generator:0.*"

使用

创建简单短密码:5个字符,只包含数字

use iiifx\PasswordGenerator\Length;
use iiifx\PasswordGenerator\Options;
use iiifx\PasswordGenerator\Symbols;
use iiifx\PasswordGenerator\Generator;

$length = new Length( 5 );
$symbols = [
    new Symbols( '1234567890' ),
];
$options = new Options( $length, $symbols );
$generator = new Generator( $options );

echo $generator->generate(); # 47884
echo $generator->generate(); # 62802
echo $generator->generate(); # 35187

复杂安全的密码:10到16个字符,包含数字、字母和特殊字符

use iiifx\PasswordGenerator\Method\MethodOpenSSL;

$length = new Length( 10, 16 ); # 10-16 знаков
$symbols = [
    new Symbols( 'abcdefghijklmnopqrstuvwxyz', 100 ), # Приоритет 100
    new Symbols( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 50 ), # Приоритет 50
    new Symbols( '1234567890', 50 ), # Приоритет 50
    new Symbols( '!@#$%?&:*+-.', 30 ), # Приоритет 30
];
$options = new Options( $length, $symbols );
$method = new MethodOpenSSL();
$generator = new Generator( $options, $method );

echo $generator->generate(); # Xn64h1:wgDk@@eh
echo $generator->generate(); # lqF&X4ywaAo
echo $generator->generate(); # E8Yk60*qavzVr

使用加密安全的生成方法

use iiifx\PasswordGenerator\Method\MethodMT;
use iiifx\PasswordGenerator\Method\MethodOpenSSL;
use iiifx\PasswordGenerator\Method\MethodRandomInt;

# По умолчанию используется базовый небезопасный алгоритм - MT
$generator = new Generator( $options ); 
# Этот пример аналогичен предыдущему
$generator = new Generator( $options, new MethodMT() ); 

# Для PHP7 возможно использовать безопасный метод random_int()
$generator = new Generator( $options, new MethodRandomInt() );

# При наличии расширения возможно использовать безопасный метод OpenSSL
$generator = new Generator( $options, new MethodOpenSSL() );

# Любой из методов можно проверить на доступность
MethodMT::isAvailable(); # true, доступен всегда
MethodRandomInt::isAvailable(); # false, метод недоступен для PHP5
MethodOpenSSL::isAvailable(); # true, расширение OpenSSL подключено

其他示例

模拟哈希

$generator = new Generator( new Options(
    new Length( 32 ),
    [ new Symbols( '0123456789abcdef' ) ]
) );
echo $generator->generate(); # 3a971aefab2b86468d1de895110b0e39

测试

Build Status Code Coverage

许可证

Software License

计划

  • 使用加密安全的随机数生成器
    • 对于 PHP7 使用 random_int()
    • 对于 PHP5 使用 openssl_random_pseudo_bytes()
    • 使用第三方解决方案
  • 实现基于模板的密码生成
  • 实现通过 Generator::create( ... ) 快速创建密码