macOS / Linux
/dev/urandom
tr -dc は指定した文字集合に含まれないバイトを捨てます。これは棄却サンプリングそのもので、出現確率に偏りが出ません。LC_ALL=C はロケールによって文字クラスの解釈が変わるのを防ぎます。
設定に合わせてコマンドを組み立てます。これらはお使いの端末の中で完結し、ネットワークを通りません。curl で叩ける API も用意していますが、こちらはサーバーが生成するため用途を限定してください(下記)。
tr -dc は指定した文字集合に含まれないバイトを捨てます。これは棄却サンプリングそのもので、出現確率に偏りが出ません。LC_ALL=C はロケールによって文字クラスの解釈が変わるのを防ぎます。
openssl rand は暗号用途の乱数を生成します。base64 は 3 バイトを 4 文字に変換するため、必要な文字数から逆算してバイト数を指定しています。このコマンドだけは上の文字種の指定が反映されません(長さのみ反映されます)。base64 の文字集合になるため、記号は + と / の 2 種類だけが含まれ得ます(= は取り除いています)。
secrets モジュールは認証情報の生成のために用意されたものです。random モジュールは再現性のために設計されており予測可能なので、パスワードには使わないでください。
Get-Random は暗号学的に安全な乱数源であることが保証されていないため使いません。RandomNumberGenerator::GetInt32 は上限を指定した偏りのない整数を返します。
これらのコマンドはお使いの端末の中で完結し、ネットワークを通りません。このページ自体も、コマンドを組み立てるために通信することはありません。
用途を限定してください。この API はサーバーが生成した値を通信で返します。生成した値はサーバーとその経路を通るため、本番の認証情報には使わないでください。使い捨てのテストデータ、CI のダミー値、開発中の仮アカウントなどが想定用途です。本番用途には上のコマンドか、このサイトの生成ページをお使いください。
curl https://kagi.mediabako.com/api/password
curl 'https://kagi.mediabako.com/api/password?len=32&symbols=1&count=5'
curl 'https://kagi.mediabako.com/api/passphrase?words=6'
curl https://kagi.mediabako.com/api # 使い方をプレーンテキストで返します
| パス | パラメータ |
|---|---|
/api/password | len 4-128 (20) / count 1-20 (1) / upper lower digits symbols 0 or 1 / urlsafe / ambiguous 1 で紛らわしい文字を除外 / format plain or json |
/api/passphrase | words 3-12 (6) / sep 区切り文字 (-) / capitalize / digits 末尾の桁数 / count / format |
/api/uuid | v 4, 7 or ulid (4) / count 1-100 (1) / format |
text/plain、1 行 1 件、末尾に改行。curl … | pbcopy がそのまま通りますCache-Control: no-store を付けています。中間キャッシュに残りません同種の API は既に存在します(例: curl 'https://www.random.org/passwords/?num=2&len=16&format=plain&rnd=new')。このサイトの主眼は API ではなく、上のコマンドと、通信を禁止した厳格モードです。
どちらも暗号用途に設計された乱数源(CSPRNG)だからです。シェルの RANDOM や多くの言語の標準的な乱数関数は、速度と再現性のために設計されており予測可能な場合があります。パスワードには使わないでください。
Get-Random は暗号学的に安全な乱数源であることが保証されていません。このページが出力する PowerShell のコマンドは System.Security.Cryptography.RandomNumberGenerator を使います。
ありません。tr -dc は指定した文字集合に含まれないバイトを捨てる動作で、これは棄却サンプリングそのものです。逆に、乱数を文字数で割った余りを使う方法(配列の添字に剰余を使う実装)は文字ごとの出現確率が偏るため避けてください。
おすすめしません。API はサーバーが生成して通信で返すため、生成した値がサーバーとその経路を通ります。使い捨てのテストデータ、CI のダミー値、開発中の仮アカウントなどに使ってください。本番の認証情報は、このサイトの生成ページかこのページのコマンドで、お使いの端末の中で作ってください。