強いパスワード生成ツール
安全な乱数で強力なパスワードをブラウザで即作成。
強さを「bit」で数値化・推定解読時間も表示・パスフレーズ対応。
🛡️ パスワード強度・解読時間の目安
現代のコンピューターによる総当たり攻撃(ブルートフォース)への耐性の参考値です。
| 文字数 | 文字種 | 強度 | 解読時間の目安 | 推奨度 |
|---|---|---|---|---|
| 8文字 | 数字のみ | 非常に弱い | 即時〜数秒 | ❌ 使用不可 |
| 8文字 | 英小文字のみ | 弱い | 数分〜数時間 | ❌ 使用不可 |
| 8文字 | 英大小+数字 | 普通 | 数日〜数週間 | ⚠️ 非推奨 |
| 8文字 | 英大小+数字+記号 | やや強い | 数ヶ月〜数年 | ⚠️ 最低限 |
| 12文字 | 英大小+数字+記号 | 強い | 数百年以上 | ✅ 推奨 |
| 16文字 | 英大小+数字+記号 | 非常に強い | 数兆年以上 | ✅ 強く推奨 |
| 20文字以上 | 英大小+数字+記号 | 最強 | 事実上解読不可能 | ✅ 最推奨 |
※ 解読時間はGPUを使った攻撃の概算値です。量子コンピューターの進化により将来変わる可能性があります。オンラインサービスでは試行回数制限があるため実際の安全性はさらに高い場合があります。
📚 セキュリティグッズ
パスワード管理とセキュリティ対策を強化するアイテム
パスワード生成ツールの使い方
桁数・文字種・生成数を選んで「パスワードを生成」を押すと、安全な乱数を使ったパスワードが生成されます。各パスワードの右にある「コピー」ボタンでクリップボードに即座にコピーできます。
英大文字・小文字・数字・記号をすべて含む16文字以上が推奨されています。サービスごとに異なるパスワードを設定し、パスワードマネージャーで管理することをお勧めします。
大文字・小文字・数字・記号を混在させると総当たり攻撃への耐性が大幅に上がります。特に記号(!@#$%など)を1文字加えるだけで解読時間を数百万倍に延ばせます。本ツールのチェックボックスで文字種を自由に選択できます。
「correct-horse-battery-staple」のようなランダムな単語を並べた「パスフレーズ」は、文字数が多くて覚えやすい長所があります。パスワードマネージャーのマスターパスワードには特に有効な方式です。
本ツールで強力なランダムパスワードを生成し、1Password・Bitwarden・iCloudキーチェーンなどのパスワードマネージャーで管理するのが最も安全な運用方法です。複数サービスで異なる強力なパスワードを使い回さずに管理できます。
本ツールはすべてブラウザ内(JavaScript)で処理されます。生成したパスワードはサーバーに送信・保存されません。ブラウザを閉じると痕跡も残らないため、安全にご利用いただけます。
🔧 「ランダムな文字列」は、どうやって作っているの?
ボタンひとつでポンと出てくるパスワード。実は「ちゃんとランダムにする」だけで、意外と気をつかう工程があります。ざっくり4つだけ。
プログラムでよく使う手軽な乱数(Math.random)は、実は「見た目がバラバラなだけ」で、条件次第では次の値を推測されることがあります。パスワードでは致命的なので、ブラウザに用意されている暗号用の乱数(crypto.getRandomValues)を使っています。
乱数を「文字の種類の数」で割った余りをそのまま使うと、ほんのわずかに特定の文字が出やすくなります(専門的には偏り=バイアス)。気持ち悪いので、範囲からはみ出た乱数は使わずに引き直すようにして、どの文字も等しく出るようにしています。
強度表示の「◯bit」は、そのパスワードがあり得る総パターン数を表しています。使う文字の種類が多いほど、桁が長いほどパターンは爆発的に増え、1bit増えるごとに候補は2倍。ここから総当たりにかかる時間の目安を逆算しています。
生成はすべてあなたのブラウザの中で完結します。できたパスワードがサーバーに送られたり、記録されたりすることはありません。閉じれば消えます。
🙋 作った人のひとりごと
パスワード生成って「ただの文字並べ」に見えて、真面目にやると奥が深くて。作りながら赤面した失敗を、正直に置いておきます。
😱 最初、ダメな乱数で作っていました
白状すると、試作の一番最初は手軽な Math.random で組んでいました。動くし、見た目もちゃんとバラバラ。でも調べていくうちに「これ、パスワードに使っちゃいけないやつだ」と青くなりまして…。見た目ランダムと、予測されない乱数は別物なんですよね。全部 crypto.getRandomValues に書き直しました。動いてても中身が危ういという、いい教訓でした。
🤨 「なんか同じ文字が多い気がする」の正体
大量に生成して眺めていたら、気のせいレベルで特定の文字がちょっと多い?と感じて。最初は「まあ誤差でしょ」とスルーしかけたんですが、調べたら本当にごくわずかな偏りがありました(余りの計算で起きるやつ)。パスワードで偏りは気分が悪いので、はみ出た乱数は捨てて引き直す方式に。目に見えない差にこだわるの、自己満足かもしれませんが。
😅 「紛らわしい文字を除く」は自分が困ったから付けた
このオプション、実は自分の実体験から生まれました。生成したパスワードを手で入力する場面で、「l(エル)」と「1(イチ)」、「O(オー)」と「0(ゼロ)」を見間違えてログインできず、しばらく固まったことがありまして。同じ思いをする人がいそうだったので、まぎらわしい文字を外せるチェックを付けました。
— MyTool Studio 中の人
🔑 このツール、作り方を全部公開しています
上の「偏りを消す引き直し」や「bitで強度を出す計算」を、実際のコードでどう書いているか。全ソースにコメント+解説をつけて note にまとめました。買うと完成品(HTML1ファイル)+全ソース+作り方がまるごと手に入ります。
- 安全な乱数(crypto.getRandomValues)と棄却サンプリングで偏りを消す仕組み
- エントロピー(bit)で強さを数値化し、推定解読時間を逆算する方法
- パスフレーズ生成(単語リスト方式)の作り方
- コピペで動く・サーバー不要・自分好みに改造OK
シリーズ「まるっとアプリ」#06/買って動く完成アプリ+全コード解説