密碼強度檢測器

檢測密碼強度、熵值和常見弱點。所有檢測均在您的瀏覽器本地運行。

強度檢測

熵值
強度:
離線(高速 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}"),
    }
}
                        

說明:這些庫給出強度與模式估算,可能與本頁檢測項略有差異。