abdullahhafizh/zxcvbn-php

基于 Zxcvbn JS 的现实密码强度估计 PHP 库

2.0.0 2022-06-22 11:09 UTC

README

Zxcvbn-PHP 是一个使用模式匹配和最小熵计算来估计密码强度的库。Zxcvbn-PHP 基于来自 Dropbox 和 @lowe 的 JavaScript zxcvbn 项目。"zxcvbn" 是一个糟糕的密码,就像 "qwerty" 和 "123456" 一样。

zxcvbn 通过模式匹配和保守的熵计算尝试提供合理的密码建议。它找到了 10k 个常见密码,常见的美国家庭和姓氏,常见的英文单词,以及常见的模式,如日期、重复(aaa)、序列(abcd)和 QWERTY 模式。

Build Status Coverage Status Latest Stable Version License

安装

可以使用 Composer 通过将其添加到 composer.json 文件中的依赖项来安装此库。

在命令行运行:composer require bjeavons/zxcvbn-php

或者在 composer.json 中添加

{
    "require": {
        "bjeavons/zxcvbn-php": "^1.0"
    }
}

然后,在命令行上运行 composer update 并在 PHP 脚本中包含自动加载器,以便 ZxcvbnPhp 类可用。

require_once 'vendor/autoload.php';

用法

use ZxcvbnPhp\Zxcvbn;

$userData = [
  'Marco',
  'marco@example.com'
];

$zxcvbn = new Zxcvbn();
$weak = $zxcvbn->passwordStrength('password', $userData);
echo $weak['score']; // will print 0

$strong = $zxcvbn->passwordStrength('correct horse battery staple');
echo $strong['score']; // will print 4

echo $weak['feedback']['warning']; // will print user-facing feedback on the password, set only when score <= 2
// $weak['feedback']['suggestions'] may contain user-facing suggestions to improve the score

分数是 0 到 4 的整数

  • 0 表示密码极其易猜(在 10^3 次猜测内),像 'password' 或 'mother' 这样的字典单词得分为 0
  • 1 仍然非常易猜(猜测 < 10^6),在字典单词上额外添加一个字符可以得分为 1
  • 2 有点易猜(猜测 < 10^8),提供了一些针对无限制在线攻击的保护
  • 3 是安全不可猜测的(猜测 < 10^10),提供了一定的针对离线慢速哈希场景的保护
  • 4 非常不可猜测(猜测 >= 10^10)并且提供了对离线慢速哈希场景的强保护

鸣谢

感谢