パスワード生成ツール
長さ・文字種を指定して強力なパスワードを生成、強度表示付き。
アプリを試す
別タブで開く ↗ユーザーが投稿した外部アプリを埋め込み表示しています。表示されない場合は「別タブで開く」からご利用ください。
長さと文字種を選ぶだけで、その場でパスワードを1本作るツールです。生成には Web Crypto API の暗号学的乱数を使っていて、結果はブラウザの中だけで組み立てられます。新しいサービスに登録するとき、共有アカウントのパスワードを作り直すとき、Wi-Fiの臨時パスフレーズが要るときなど、「そこそこ強いものを今すぐ1本」という場面のために置いています。
こんなときに使う
- 新しいSaaSに登録する直前で、使い回しでないパスワードを1本その場で作りたいとき
- チームで共有しているアカウントのパスワードを、退職者が出たタイミングで作り替えるとき
- 印刷して手で書き写す運用があり、I と l、0 と O を取り違えたくないとき
- 記号を受け付けないサービス向けに、英数字だけの長めのパスワードを作りたいとき
使い方
- スライダーで長さを決めます。動かした瞬間に新しいパスワードが自動で作り直されます。
- 「大文字 A–Z」「小文字 a–z」「数字 0–9」「記号 !@#…」の4つのタイルを押して、使う文字種を切り替えます。
- 手書きで写すなら「紛らわしい文字を除外」にチェックを入れます。
- 気に入らなければ右上の再生成ボタンで引き直します。
- 「クリップボードにコピー」を押すと、ボタンが「コピーしました」に変わります(約1.8秒で元に戻ります)。
仕様と機能
| 項目 | 内容 |
|---|---|
| 長さ | 4〜64(既定は16) |
| 文字種 | 大文字・小文字・数字・記号の4種。既定は全部オン |
| 記号の内訳 | !@#$%^&*()-_=+[]{};:,.<>?/ |
| 除外対象の紛らわしい文字 | I l 1 O 0 o 5 S 2 Z 8 B(および縦棒) |
| 乱数 | crypto.getRandomValues。剰余バイアスを避けるため 256 を文字数で割り切れる範囲に丸め、範囲外のバイトは捨てて引き直します |
| 並べ替え | Fisher–Yates シャッフル(こちらも暗号学的乱数) |
| 強度表示 | 長さ × log2(プール文字数) をビット数として概算 |
| 保存 | 設定のみ localStorage の password-generator-options に保存。生成したパスワードは保存しません |
強度のラベルは、40ビット未満で「弱い」、60未満で「普通」、90未満で「強い」、90以上で「非常に強い」に分かれます。
作るときに決めたこと
既定を16文字・全文字種オンにしたのは、この状態でエントロピーが十分「非常に強い」の帯に入り、なおかつ大半のサービスが受け付ける長さだからです。ここを12にすると帯がひとつ下がってしまい、逆に24にすると初見で「長すぎる」と感じて手動で縮める人が増えると考えました。
選んだ文字種を必ず1文字以上含める処理を入れています。「記号を1つ以上」という要件のサービスに弾かれて生成し直す手間が一番のストレスなので、確率任せにせず先に各文字種から1文字ずつ確保し、残りをプールから引いて、最後に全体をシャッフルしています。
紛らわしい文字の除外は既定でオフにしました。除外するとプールが小さくなり、同じ長さでもエントロピーが下がります。常時オンにすると気づかないうちに強度を削ることになるので、手で書き写す人だけが明示的に選ぶ形にしています。
生成したパスワードは保存していません。設定だけを localStorage に残し、パスワード本体はページを離れれば消えます。履歴機能はあると便利ですが、ブラウザに平文の履歴が積み上がる設計は避けました。
注意点
- 生成結果も設定も外部には送信しませんが、共用パソコンでは使用後にタブを閉じてください。設定はその端末のブラウザに残ります。
- 強度のビット数はあくまで概算です。生成方法から計算した理論値であって、実際の攻撃耐性を保証するものではありません。
- 記号を使えない、長さの上限が厳しいなど、サービス側の制限には自動で追従しません。エラーが出た場合は条件を手で調整してください。