パスワード強度検出器

パスワードの強度、エントロピー値、一般的な弱点を検出します。すべての検出はあなたのブラウザ内でローカルに実行されます。

強度検出

エントロピー値
強度:
オフライン(高速 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}"),
    }
}
                        

注:これらのライブラリは強度とパターンの推定を提供しますが、このページの検出項目と多少異なる場合があります。