ランダムトークンジェネレーター
セッション、パスワードリセット、CSRF、招待用に暗号論的に安全なランダムトークンを作成。16 進、Base64url、Base32、英数字に対応し、既定は 256 ビットです。
任意(例: sk_live_、myapp_)。キーが識別しやすくなり、コードに漏れた場合も検出しやすくなります。
エントロピー 256 ビット · 1 件あたり 64 文字
crypto.getRandomValues でローカル生成しており、送信・保存は一切ありません。シークレットは環境変数やシークレットマネージャーに保管し、ソースコードには書かないでください。
ランダムトークンジェネレーターとは?
パスワードリセットのリンク、メール認証、招待コード、CSRF 対策、セッション ID、その他の使い捨てシークレット向けに、推測できないランダムなトークンを生成します。既定は 32 バイト(256 ビット)のランダムな値で、16 進 64 文字として表示されます。URL セーフな Base64url、Base32、Base64、英数字の出力に切り替えられます。
ランダムトークンジェネレーターの使い方
- 形式 を選びます。16 進が最も一般的で、Base64url は短く URL でも安全に使えます。
- ランダムバイト数 を設定します(英数字形式では文字数の 長さ)。
- 生成するトークンの 個数 を選び、再生成 をクリックして新しいセットを作ります。
- トークンをコピーします。
例
Format Base64url, 32 random bytes, How many 1
81u4aRrBPjZmdbKks_Gh_FDt4AKsSY4FQllDH0mkThk
256 ビット、43 文字。ランダムなので、実際の値は異なります。
ランダムトークンジェネレーターを使うべき場面
値を持っていることがアクセス権になり、推測できてはならない場面ならどこでも、これらのトークンを使います。内部に構造や有効期限(クレーム、署名)が必要な値には JWT を、秘密にする必要のないデータベース ID には UUID のほうが簡単です。
ランダムトークンジェネレーターの仕組み
ツールはブラウザの CSPRNG(crypto.getRandomValues)から N バイトの乱数を取得してエンコードします。16 進は 1 バイトにつき 2 文字、Base64url(RFC 4648 §5)はパディングなしの A-Z a-z 0-9 - _、Base32 は A-Z 2-7 を使います。エントロピーの行にはランダム性のビット数(8 × バイト数)と結果の長さが表示され、128 ビット未満では警告が出ます。
一般的な使用例
- パスワードリセットやメール認証のリンク
- セッション識別子と CSRF トークン
- 招待コードや使い捨てのダウンロードコード
- Webhook のシークレットや共有の署名鍵
セキュリティ注意事項
トークンはパスワードと同様に扱い、有効期限を設け、使用後は無効化し、可能ならサーバーにはハッシュだけを保存してください。
よくある質問
16 進と Base64url のどちらがよいですか?
同じバイト数なら、どちらも同じランダム性を持ちます。Base64url は約 3 分の 1 短く(32 バイトで 43 文字と 64 文字)URL でも安全で、16 進は読みやすく比較しやすい形式です。
何バイト必要ですか?
セキュリティトークンでは 16 バイト(128 ビット)が通常の最小値で、32 バイト(256 ビット)なら十分な余裕があります。
ブラウザでトークンを生成しても安全ですか?
はい。crypto.getRandomValues は暗号論的に安全な生成器で、何もサーバーに送信されません。アプリケーションがユーザーに発行するトークンは、同種の CSPRNG を使ってサーバー側で生成してください。