API キージェネレーター
sk_live_ のようなカスタムプレフィックス付きで安全なランダム API キーを生成。英数字・16 進・Base64url・Base32、任意の長さに対応し、エントロピー(ビット)も表示します。
任意(例: sk_live_、myapp_)。キーが識別しやすくなり、コードに漏れた場合も検出しやすくなります。
エントロピー 190 ビット · 1 件あたり 35 文字
crypto.getRandomValues でローカル生成しており、送信・保存は一切ありません。シークレットは環境変数やシークレットマネージャーに保管し、ソースコードには書かないでください。
API キージェネレーターとは?
自分のサービス向けのランダムな API キーを作成します。既定では、多くの SaaS 製品が発行するキーのように、sk_ プレフィックス付きの英数字 32 文字になります。プレフィックス、文字セット(英数字、16 進、Base64url、Base32 など)、長さ、生成するキーの数を変更できます。各キーのエントロピーが表示されるため、十分な強度があるか確認できます。
API キージェネレーターの使い方
- プレフィックス を設定します(例:
sk_live_やmyapp_)。空のままでもかまいません。 - 形式 と 長さ を選びます(文字数、16 進や Base64 形式ではランダムバイト数)。
- 必要なキーの 個数 を設定し、再生成 をクリックして新しいキーを作ります。
- キーをコピーし、サーバーにはハッシュ化して保存します。
例
Prefix sk_, Letters and digits, Length 32
sk_7M1R2Vhc2z6q19CVQAGIOp87bJXcY0wA
エントロピーは 190 ビット。ランダムなので、実際のキーは異なります。
API キージェネレーターを使うべき場面
API を構築してクライアントにキーを発行する場合や、サービスから独自の共有キーを定義するよう求められた場合に使います。少なくとも 128 ビットのエントロピーを目指してください。人が入力するパスワードの作成には使わず、生成したキーをデータベースにプレーンテキストで保存しないでください。
API キージェネレーターの仕組み
乱数は crypto.getRandomValues から得ます。文字形式では、棄却サンプリングによりアルファベットから各文字が一様に選ばれるため、エントロピーは 長さ × log2(アルファベットの大きさ) になります。英数字 32 文字なら 32 × 5.95 ≈ 190 ビットです。バイト形式では N バイトの乱数を引いてエンコード(16 進、Base64、Base64url、RFC 4648 の Base32)し、8 × N ビットになります。プレフィックスは先頭に付くだけで、エントロピーは増えません。
一般的な使用例
- SaaS 製品の顧客に API キーを発行する
- 社内のサービス間呼び出し用のキーを作成する
- Webhook の署名シークレットを生成する
- ステージング環境用のテストキーを作成する
セキュリティ注意事項
キーはローカルで生成され、送信されることはありません。キーは所有者に一度だけ表示し、そのハッシュを保存して、ユーザーがキーを無効化・ローテーションできるようにしてください。
よくある質問
API キーはどれくらいの長さにすべきですか?
少なくとも 128 ビットのエントロピーが必要で、英数字 22 文字以上、またはランダムな 16 バイト以上です。既定の英数字 32 文字なら約 190 ビットになります。
なぜプレフィックスを付けるのですか?
sk_live_ のようなプレフィックスは、キーの用途を明確にし、テスト用と本番用のキーの取り違えを防ぎ、シークレットスキャナー(GitHub のシークレットスキャンなど)が漏えいしたキーを検出する助けになります。
サーバー上で API キーをどう保存すべきですか?
パスワードと同様に、各キーのハッシュ(たとえば SHA-256)だけを保存し、リクエストが届いたらハッシュを比較してください。そうすれば、データベースが漏えいしても使えるキーは露出しません。