密码强度检测器

检测密码强度、熵值和常见弱点。所有检测均在您的浏览器本地运行。

强度检测

熵值
强度:
离线(高速 GPU)破解时间估算
在线(限速)破解时间估算
检测结果
  • 长度
  • 小写字母
  • 大写字母
  • 数字
  • 符号
  • 序列
  • 重复
  • 黑名单
  • 键盘模式
  • 日期
  • 周期
策略配置
逗号分隔,不区分大小写。支持 Leet 归一化(如 Pa$$w0rd → password)。
优化建议
隐私说明:检测完全在你的浏览器本地进行,密码不会被上传。

使用方法

在本地分析密码并获得可执行的优化建议。
1)输入或粘贴密码;结果会实时更新。
2)按需调整策略(最小长度/字符类型要求)。
3)将常见弱词加入黑名单以辅助识别(支持 Leet 归一化)。
4)使用导入/导出共享策略设置。

功能特色

  • 100% 本地分析,优先保护隐私。
  • 高级检测:键盘走位、日期、周期重复、顺序、重复等。
  • Leet 归一化黑名单匹配(如 Pa$$w0rd → password)。
  • 灵活策略:最小长度与字符类型要求。
  • 一键导入/导出策略 JSON。
  • 一键在检测器中分析

密码对比

对比结果
熵值(A): 熵值(B):

常见问题

我的密码会被上传吗?
不会。所有分析都只在你的浏览器内执行。
“熵值”是什么意思?
大致表示需要多少次尝试才能猜中。存在结构时真实强度会下降。
为什么分数下降了?
序列、日期或键盘走位等模式会降低强度。

报告

报告不包含你的密码文本,仅包含指标和设置。

相关知识
熵值

熵用于估算基于字符集与长度的搜索空间大小。若存在结构性(模式、单词),即使原始比特看起来很高,有效熵也会降低。

检测项说明
  • 顺序序列,如 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}"),
    }
}
                        

说明:这些库给出强度与模式估算,可能与本页检测项略有差异。