niirrty/niirrty.security.password

一个小型密码安全库

0.1.0 2018-01-09 11:52 UTC

This package is auto-updated.

Last update: 2024-09-28 18:10:50 UTC


README

一个小型密码安全库。

它定义了一个单类 Niirrty\Security\Password\PasswordSecurityCheck,可用于检查密码质量。

安装

这是一个composer包,所以您可以通过composer安装它

composer require niirrty/niirrty.security.password ~0.1

或在其composer.json文件中

{
   "require": {
      "php": ">=7.1",
      "composer require niirrty/niirrty.security.password": "~0.1"
   }
}

它如何工作?

它生成了4个不同的密码质量指标

  1. 密码长度:使用11个或更多字符可以达到最大质量
  2. 字符多样性:与使用多少不同字符相关的质量
  3. 字符类型多样性:与使用多少不同字符类型相关的质量(小写字母、大写字母、数字、其他)
  4. 知名列表:如果被Top 10密码列表所知,则为1,如果被Top 25密码列表所知,则为2,如果被Top 50密码列表所知,则为5,否则为10

检查密码是否在Top 10/25/50密码列表中,使用SQLite数据库在后台进行。该数据库定义了所有唯一的Top10、Top25和Top50密码,这些密码是从SecLists密码文件中提取的,排除了西班牙语和不是*.txt文件。

每个指标都有一个介于0(无安全)和10(最大安全)之间的值

4个指标中的最低值将由 ->getQuality() 返回

密码本身不会存储在类实例中。

用法

这是一个简单的用法示例

# include __DIR__ . '/vendor/autoload.php';

use \Niirrty\Security\Password\PasswordSecurityCheck;

$passwords = [
   '',
   '0',
   '1',
   '22',
   'aaa',
   'aaaa',
   'AAAAA',
   '123456',
   '_______',
   'gEhe1m',
   '$4QT5/_8',
   '123456789'
];

foreach ( $passwords as $password )
{
   echo $password, ': ', ( new PasswordSecurityCheck( $password ) )->getQuality(), "\n";
}

将输出

: 0                              <== LenQ=0  DivQ=0  DivTQ=0  TopQ=1
0: 0                             <== LenQ=0  DivQ=1  DivTQ=2  TopQ=1
1: 0                             <== LenQ=0  DivQ=1  DivTQ=2  TopQ=1
22: 1                            <== LenQ=1  DivQ=1  DivTQ=2  TopQ=10
aaa: 1                           <== LenQ=2  DivQ=1  DivTQ=2  TopQ=10
aaaa: 1                          <== LenQ=3  DivQ=1  DivTQ=2  TopQ=1
AAAAA: 1                         <== LenQ=4  DivQ=1  DivTQ=2  TopQ=10
123456: 1                        <== LenQ=5  DivQ=8  DivTQ=2  TopQ=1
_______: 1                       <== LenQ=6  DivQ=1  DivTQ=2  TopQ=10
gEhe1m: 5                        <== LenQ=5  DivQ=6  DivTQ=6  TopQ=10
$4QT5/_8: 7                      <== LenQ=7  DivQ=8  DivTQ=8  TopQ=10
123456789: 1                     <== LenQ=8  DivQ=10 DivTQ=2  TopQ=1

上述使用的缩写是

  • LenQ : 密码长度质量
  • DivQ : 字符多样性质量
  • DivTQ:字符类型多样性质量
  • TopQ : 知名列表质量