密碼強度檢測器
檢測密碼強度、熵值和常見弱點。所有檢測均在您的瀏覽器本地運行。
使用方法
在本地分析密碼並獲得可執行的優化建議。
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}"),
}
}
說明:這些庫給出強度與模式估算,可能與本頁檢測項略有差異。