カギバコ

パスワードもファイルも、送らずに作る・確かめる

コマンドでパスワードを生成する

設定に合わせてコマンドを組み立てます。これらはお使いの端末の中で完結し、ネットワークを通りません。curl で叩ける API も用意していますが、こちらはサーバーが生成するため用途を限定してください(下記)。

20

macOS / Linux

/dev/urandom

tr -dc は指定した文字集合に含まれないバイトを捨てます。これは棄却サンプリングそのもので、出現確率に偏りが出ません。LC_ALL=C はロケールによって文字クラスの解釈が変わるのを防ぎます。

macOS / Linux

openssl

openssl rand は暗号用途の乱数を生成します。base64 は 3 バイトを 4 文字に変換するため、必要な文字数から逆算してバイト数を指定しています。このコマンドだけは上の文字種の指定が反映されません(長さのみ反映されます)。base64 の文字集合になるため、記号は + と / の 2 種類だけが含まれ得ます(= は取り除いています)。

Python 3

secrets

secrets モジュールは認証情報の生成のために用意されたものです。random モジュールは再現性のために設計されており予測可能なので、パスワードには使わないでください。

Windows

PowerShell

Get-Random は暗号学的に安全な乱数源であることが保証されていないため使いません。RandomNumberGenerator::GetInt32 は上限を指定した偏りのない整数を返します。

これらのコマンドはお使いの端末の中で完結し、ネットワークを通りません。このページ自体も、コマンドを組み立てるために通信することはありません。

curl で叩ける API

用途を限定してください。この 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/passwordlen 4-128 (20) / count 1-20 (1) / upper lower digits symbols 0 or 1 / urlsafe / ambiguous 1 で紛らわしい文字を除外 / format plain or json
/api/passphrasewords 3-12 (6) / sep 区切り文字 (-) / capitalize / digits 末尾の桁数 / count / format
/api/uuidv 4, 7 or ulid (4) / count 1-100 (1) / format

仕様

機械可読な定義

同種の API は既に存在します(例: curl 'https://www.random.org/passwords/?num=2&len=16&format=plain&rnd=new')。このサイトの主眼は API ではなく、上のコマンドと、通信を禁止した厳格モードです。

よくある質問

なぜ /dev/urandom や openssl rand を使うのですか?

どちらも暗号用途に設計された乱数源(CSPRNG)だからです。シェルの RANDOM や多くの言語の標準的な乱数関数は、速度と再現性のために設計されており予測可能な場合があります。パスワードには使わないでください。

PowerShell の Get-Random を使わないのはなぜですか?

Get-Random は暗号学的に安全な乱数源であることが保証されていません。このページが出力する PowerShell のコマンドは System.Security.Cryptography.RandomNumberGenerator を使います。

tr -dc を使う方法に偏りはありませんか?

ありません。tr -dc は指定した文字集合に含まれないバイトを捨てる動作で、これは棄却サンプリングそのものです。逆に、乱数を文字数で割った余りを使う方法(配列の添字に剰余を使う実装)は文字ごとの出現確率が偏るため避けてください。

API で受け取ったパスワードを本番で使っていいですか?

おすすめしません。API はサーバーが生成して通信で返すため、生成した値がサーバーとその経路を通ります。使い捨てのテストデータ、CI のダミー値、開発中の仮アカウントなどに使ってください。本番の認証情報は、このサイトの生成ページかこのページのコマンドで、お使いの端末の中で作ってください。