パスワードジェネレーター|安全なランダムパスワード
Web Crypto APIを使用した暗号学的に安全な乱数によるパスワードジェネレーター。長さ8〜126文字、文字セット、エントロピーをカスタマイズ可能。
パスワードジェネレーターとは?
パスワードジェネレーターは、Web Crypto API(crypto.getRandomValues)を使用して、強力で暗号学的に安全なパスワードを生成します。これはオペレーティングシステムがセキュリティ上重要な操作に使用するのと同じ乱数ソースです。擬似乱数ではありません。各文字は選択した文字セットに基づくサイズのプールから抽出され、modulo biasを排除するためにrejection samplingが使用されています。
テストアカウント、APIキー、ローカルシークレット、シードデータ、または予測可能な弱いパスワードがセキュリティリスクとなるあらゆる場面でこのツールをご利用ください。一度に最大100個のパスワードを生成し、それぞれのエントロピー推定値を表示し、クリップボードに直接コピーできます。すべてブラウザ内で動作し、パスワードは一切記録も送信もされません。
主な機能
- 暗号学的に安全な乱数 — modulo biasを排除するためにrejection sampling(
getUnbiasedRandomIndex)と共にcrypto.getRandomValuesを使用。文字セットサイズが2の累乗でない場合の単純な実装が抱える問題を解消します。 - カスタマイズ可能な長さ(8〜126文字) — スライダーと数値入力フィールドで設定。入力フィールドは自動的に8〜128の範囲に制限されます。
- 4つの文字セット — 大文字(A〜Z、26文字)、小文字(a〜z、26文字)、数字(0〜9、10文字)、記号(
!@#$%^&*()_+-=[]{}|;:,.<>?、26文字)。少なくとも1つはアクティブでなければなりません。最後のアクティブなセットの選択解除はできません。 - 曖昧な文字を除外 —
O、0、I、l、1をプールから除去。多くのフォントで見た目が似ているこれらの文字を排除します。コンポーネントはこれらを'O0Il1'(5文字)として定義しています。 - エントロピー表示 — オプションを調整する際にリアルタイムで合計エントロピー(ビット)、文字セットサイズ、文字あたりのビット数を表示。計算式は
長さ × log2(文字セットサイズ)。 - 7段階の強度レベル — 弱い(< 40ビット)、まずまず(40〜49)、良い(50〜59)、強い(60〜79)、非常に強い(80〜99)、要塞(100〜149)、荒唐無稽(150+ビット)。各レベルに独自のカラーインジケーターがあります。
- 一括生成(最大100個) — スライダーでクリックあたりの生成数を制御。デフォルトは1。
- クリップボードにコピー — 個別または一括でコピー。
- 強度ガイド — 各強度レベルのコンシューマGPUおよび国家レベルの脅威における推定クラック時間を示す参照テーブル。
パスワードジェネレーターの使い方
ステップ1:長さを設定する
スライダー(8〜128)または数値入力ボックスでパスワードの長さを選択します。2つのコントロールは同期されており、どちらを動かしてももう一方が更新されます。デフォルトは16文字。
エントロピー表示はすぐに更新されます。長さ16で全文字セットアクティブ(合計88文字)の場合、約16 × log2(88) ≈ 103.4ビットが得られ、要塞と評価されます。
ステップ2:文字セットを選択する
4つのチェックボックスで含まれる文字を制御します。
- 大文字 A〜Z — 26文字
- 小文字 a〜z — 26文字
- 数字 0〜9 — 10文字
- 記号 — 26文字:
!@#$%^&*()_+-=[]{}|;:,.<>?
最後の1つを残して全て外すことはできます。最後のアクティブなセットを外そうとすると、エラーメッセージが表示されます:「Please select at least one character set.」
ステップ3:オプションで曖昧な文字を除外する
「曖昧な文字を除外」にチェックを入れると、O、0、I、l、1がプールから除去されます。これにより文字セットサイズが5文字減ります。エントロピー表示は即座に変化を反映します。このオプションは、パスワードを画面から読み上げたり入力したりする場合に便利です。電話口で伝えたり、ドキュメントに印刷したりする場面が典型例です。
ステップ4:数量を設定して生成する
カウントスライダー(1〜100)で1回のクリックで生成するパスワード数を選択します。「Generate」をクリック。各パスワードは文字位置ごとにgetUnbiasedRandomIndexを新たに呼び出して独立して生成されます。
成功通知で生成されたパスワード数が確認できます。スクロール可能なリストを持つ結果カードが表示され、各パスワードの個別エントロピー値と強度カラーインジケーターが表示されます。
ステップ5:パスワードをコピーする
- 個別のパスワード行のコピーアイコンをクリックすると、そのパスワードのみコピーできます。
- 「Copy All」をクリックすると、全パスワードを改行区切りリストとしてコピーできます。
コンポーネントには、navigator.clipboardが利用できない古いブラウザ環境向けにdocument.execCommand('copy')を使ったフォールバッククリップボード機能が含まれています。
実用的な例
ステージング環境のAPIキーを生成する。 マイクロサービス認証用に10個のユニークなシークレットが必要な場合。長さを32に設定し、全文字セットをアクティブに保ち、数量を10に設定して「Generate」をクリック。全てをクリップボードにコピーしてシークレットマネージャーにペーストします。88文字プールで32文字の場合、各パスワードは約207ビットのエントロピーを持ち、荒唐無稽の範囲に入ります。
チーム引き継ぎ文書用の読みやすいパスワードを作成する。 一時的な管理者パスワードを口頭で伝える必要がある場合。長さを16に設定し、「曖昧な文字を除外」を有効にして、他の全セットをアクティブに保ちます。生成されるパスワードには見間違えやすい文字が含まれず、声に出して読み上げ、正確に書き取りやすくなります。
様々なパスワード複雑さのテストアカウントを準備する。 アプリのパスワード強度メーターを複数のレベルでテストしたい場合。異なる長さでパスワードを生成します:8文字(弱い/まずまず)、12文字(良い)、16文字(強い/非常に強い)、24文字(要塞)。それぞれをテストフィクスチャのシード値として使用します。
ヒントとベストプラクティス
長さを選ぶ前に強度レベルを理解しましょう。 全セットアクティブ(88文字プール)で16文字の場合、エントロピーは約103ビット(要塞)。12文字に減らすと約78ビット(強い)。エントロピー表示はこれらの値をリアルタイムで表示するので、手動で計算する必要はありません。
エントロピーの観点では、より長いパスワードはより複雑な文字セットより優れています。 12文字のパスワード(78ビット)に記号を追加するより、2文字長くする方が効果的です。14文字の全小文字パスワード(66ビット:良い)は8文字の混合セットパスワード(52ビット:まずまず)より多くのエントロピーを提供しますが、両方の要素が引き続き重要です。
「曖昧な文字を除外」は選択的に使用してください。 5文字の除去によりエントロピーがわずかに低下します。人間がパスワードを読まないマシン間の認証情報の場合、最大エントロピーのために全文字を有効にしておきましょう。
荒唐無稽レベルは本物です。 150+ビットのエントロピーでは、現在の計算速度で宇宙に存在するエネルギーを超えるブルートフォース攻撃が必要です。全セットアクティブの128文字パスワードの場合、エントロピーは約827ビット。ツールは「Ludicrous」を多色レインボーエフェクトで表示します。
関連サービスに一意のパスワードが必要な場合は複数生成してください。 数量を5または10に設定して1回「Generate」をクリック。各パスワードは独立してランダムなので、一度の操作でユニークな認証情報セットが得られます。
よくある問題とトラブルシューティング
「Please select at least one character set」エラー。 最後のアクティブな文字セットチェックボックスを外そうとしました。ツールは早期リターンとエラー表示でこれを防ぎます。現在のセットを外す前に少なくとも1つの別のセットを有効にしてください。
コピーボタンが機能しないように見える。 navigator.clipboardが利用できない場合(一部のブラウザセキュリティコンテキスト)、ツールはdocument.execCommand('copy')にフォールバックします。両方が無音で失敗する場合、ページにフォーカスがあるか、クリップボードアクセスがブラウザ権限でブロックされていないかを確認してください。
エントロピーが予想より低い。 「曖昧な文字を除外」が意図せずチェックされていないか確認してください。これによりプールから5文字が削除されます。また、エントロピー表示は現在のアクティブな設定のみを反映するため、希望する全文字セットがチェックされているか確認してください。
記号を有効にしているのに生成されたパスワードに記号が含まれない。 ランダム性は設計上予測不可能です。短いパスワードは偶然プールから記号文字を全く選ばないことがあります。ジェネレーターは全文字タイプの包含を保証しておらず、プール内の各文字タイプが各位置で等確率で選択されることのみを保証しています。全アクティブセットが出現する確率を上げるために長さを増やしてください。
生成された全パスワードが似ている。 暗号学的ランダム性では統計的にあり得ないことであり、表示の不具合が原因である可能性が高いです。結果ヘッダーの「Regenerate」をクリックすると新しいセットが生成されます。
プライバシーとセキュリティ
パスワードジェネレーターはブラウザの暗号学的に安全な疑似乱数生成器(CSPRNG)であるcrypto.getRandomValuesを使用します。生成されたパスワードはサーバーに送信されません。APIコールなし、パスワード値を含む分析イベントなし、ログ記録なしです。rejection samplingアルゴリズム(getUnbiasedRandomIndex)は単純なアプローチに多く見られるmodulo biasを排除し、全文字セット位置での均一な分布を保証します。ツールはページ読み込み後オフラインで動作します。生成されたパスワードはアプリケーション自体によって保存されることはなく、コピーするかページを離れるまでブラウザのメモリ内にのみ存在します。
よくある質問
パスワードジェネレーターは無料ですか? はい、アカウントなし、サインアップなし、利用制限なしで完全に無料です。
本当にランダムですか、それとも擬似ランダムですか? ツールはブラウザの暗号学的に安全な乱数生成器(CSPRNG)であるcrypto.getRandomValuesを呼び出します。これはTLS鍵生成やその他のセキュリティ上重要な操作に使用されるのと同じソースです。Math.random()のような単純な擬似乱数関数ではありません。
modulo biasとは何ですか?このツールはそれを回避していますか? modulo biasは、乱数を乱数空間を均等に割り切らない文字セットサイズで割った余りを求める際に発生します。その結果、一部の文字がわずかに多く選ばれます。このツールはrejection samplingを使用しています。バイアスを引き起こす乱数値を捨て、使用可能な値が見つかるまで再試行します。この関数はソースコードでgetUnbiasedRandomIndexと呼ばれています。
オフラインでパスワードを生成できますか? はい。ページ読み込み後、全ての生成がネットワーク依存なしにローカルで実行されます。
「曖昧な文字を除外」は何を除去しますか? O、0、I、l、1 — 多くのフォントで視覚的に似ている5文字です。人間が読み取り、入力、または発話するパスワードに便利です。
7段階の強度レベルとは? 弱い(< 40ビット)、まずまず(40〜49)、良い(50〜59)、強い(60〜79)、非常に強い(80〜99)、要塞(100〜149)、荒唐無稽(150+ビット)。強度はパスワードの長さ × log2(文字セットサイズ)から計算されます。
一度に何個生成できますか? カウントスライダーで制御し、クリックあたり最大100個。
記号セットにはどの文字が含まれますか? 記号文字セットは!@#$%^&*()_+-=[]{}|;:,.<>? — 26文字。アポストロフィとバックティックは含まれておらず、よくあるシェルエスケープの問題を避けられます。
生成されたパスワードはどこかに保存されますか? いいえ。パスワードはブラウザのメモリで生成され、結果リストに表示されます。ページを閉じたり離れたりするとクリアされます。プレミアムサポーターは過去に生成した設定を確認するために履歴パネルを利用できますが、実際のパスワード値はIndexedDBにローカルのみで保存され、サーバーには保存されません。
用途別の推奨長さは? 一般アカウント:16〜20文字(要塞)。高価値ターゲット(管理者アカウント、rootの認証情報):24〜32文字。長さ制限のないマシン間APIキー:32〜64文字。エントロピー表示が調整中にリアルタイムフィードバックを提供します。
関連ツール
- パスフレーズジェネレーター — 同等のエントロピーを持つ単語ベースの覚えやすいパスワードを生成。
- UUIDジェネレーター — パスワード以外の用途向けにRFC準拠のユニーク識別子を生成。
- ハッシュジェネレーター — SHA-256、SHA-512などで生成したパスワードをハッシュ化。
今すぐパスワードジェネレーターを試す:パスワードジェネレーター