密码强度检测器
检测密码强度、熵值和常见弱点。所有检测均在您的浏览器本地运行。
使用方法
在本地分析密码并获得可执行的优化建议。
1)输入或粘贴密码;结果会实时更新。
2)按需调整策略(最小长度/字符类型要求)。
3)将常见弱词加入黑名单以辅助识别(支持 Leet 归一化)。
4)使用导入/导出共享策略设置。
功能特色
- 100% 本地分析,优先保护隐私。
- 高级检测:键盘走位、日期、周期重复、顺序、重复等。
- Leet 归一化黑名单匹配(如 Pa$$w0rd → password)。
- 灵活策略:最小长度与字符类型要求。
- 一键导入/导出策略 JSON。
- 一键在检测器中分析
常见问题
我的密码会被上传吗?
不会。所有分析都只在你的浏览器内执行。
“熵值”是什么意思?
大致表示需要多少次尝试才能猜中。存在结构时真实强度会下降。
为什么分数下降了?
序列、日期或键盘走位等模式会降低强度。
相关知识
熵值
熵用于估算基于字符集与长度的搜索空间大小。若存在结构性(模式、单词),即使原始比特看起来很高,有效熵也会降低。
检测项说明
- 顺序序列,如 abcde 或 12345。
- 同一字符的长重复(如 aaaa)。
- 与自定义黑名单中的常见弱词/模式匹配。
- 键盘走位或相邻键序列(如 qwerty、asdf)。
- 日期样式(如 YYYYMMDD、dd-mm-yyyy)。
- 重复子串(如 abcabc、121212)。
- 在黑名单匹配前进行 Leet 归一化(如 Pa$$w0rd → password)。
破解时间注意
破解时间仅为粗略估计。实际攻击会使用字典、遮罩与 GPU。短且结构明显的密码常远弱于其表面熵值。
最佳实践
- 优先使用较长的随机通关短语(4 个以上词)或密码管理器生成的密码。
- 避免个人信息、日期与可预测结构。
- 使用密码管理器,并尽可能启用多因子认证(MFA)。
- 不要重复使用密码;仅在泄露时进行更换。
如何通过编程语言检测密码强度
下面是使用社区成熟库的最小示例,可按你的技术栈选择。
JavaScript
<!-- CDN -->
<script src="https://unpkg.com/[email protected]/dist/zxcvbn.js"></script>
<script>
const res = zxcvbn('P@ssw0rd!');
console.log(res.score, res.crack_times_display);
</script>
Node.js
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';
const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
PHP
composer require bjeavons/zxcvbn-php
<?php
require __DIR__ . '/vendor/autoload.php';
use ZxcvbnPhp\\Zxcvbn;
$zxcvbn = new Zxcvbn();
$res = $zxcvbn->passwordStrength('P@ssw0rd!');
echo $res['score'];
Python
pip install zxcvbn
from zxcvbn import zxcvbn
res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
Go
go get github.com/nbutton23/zxcvbn-go
package main
import (
"fmt"
zxcvbn "github.com/nbutton23/zxcvbn-go"
)
func main() {
res := zxcvbn.PasswordStrength("P@ssw0rd!", nil)
fmt.Println(res.Score, res.Guesses)
}
Rust
# Add dependency
cargo add zxcvbn
use zxcvbn::zxcvbn;
fn main() {
match zxcvbn("P@ssw0rd!", &[]) {
Ok(estimate) => {
println!("score: {}", estimate.score()); // 0..4
if let Some(times) = estimate.crack_times() {
println!("offline: {:?}", times.offline_slow_hashing_1e4_per_second());
}
}
Err(err) => eprintln!("zxcvbn error: {err}"),
}
}
说明:这些库给出强度与模式估算,可能与本页检测项略有差异。