abdullahhafizh / zxcvbn-php
基于 Zxcvbn JS 的现实密码强度估计 PHP 库
2.0.0
2022-06-22 11:09 UTC
Requires
- php: ^5.0 | ^5.1 | ^5.6 | ^7.2 | ^8.0 | ^8.1
- ext-json: *
- symfony/polyfill-mbstring: >=1.3.1
Requires (Dev)
Suggests
- ext-gmp: Required for optimized binomial calculations (also requires PHP >= 7.3)
This package is auto-updated.
Last update: 2024-09-22 16:30:59 UTC
README
Zxcvbn-PHP 是一个使用模式匹配和最小熵计算来估计密码强度的库。Zxcvbn-PHP 基于来自 Dropbox 和 @lowe 的 JavaScript zxcvbn 项目。"zxcvbn" 是一个糟糕的密码,就像 "qwerty" 和 "123456" 一样。
zxcvbn 通过模式匹配和保守的熵计算尝试提供合理的密码建议。它找到了 10k 个常见密码,常见的美国家庭和姓氏,常见的英文单词,以及常见的模式,如日期、重复(aaa)、序列(abcd)和 QWERTY 模式。
安装
可以使用 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)并且提供了对离线慢速哈希场景的强保护
鸣谢
感谢
- @lowe 为原始的 JavaScript Zxcvbn
- @Dreyer 的端口 用于参考初始实现
- @mkopinsky 为与上游评分保持同步进行了重大更新