TOTP / 2FA コードジェネレーター
Base32 シークレットから TOTP/2FA コードを即座に生成 — 100% ブラウザ内で動作し、シークレットがデバイスから外に出ることはありません。QR セットアップ + コード検証付き。無料、登録不要。
詳細オプション
TOTP / 2FA コードジェネレーターとは?
TOTP ジェネレーターは、共有シークレットを、二要素認証を支える回転式のワンタイムコードへと変換します。TOTP —— 時刻ベースのワンタイムパスワード、RFC 6238 で定義 —— は Base32 シークレットと現在時刻を受け取り、時刻を固定ステップ(デフォルト 30 秒)に分割し、ステップカウンターに対して HMAC を実行して短い数値コードを導出します。認証アプリとサーバーが同じシークレットを保持し、同じ時計を読むため、ネットワーク上で交換することなく、両者は同一のコードを計算します。これこそが 2FA の本質です。パスワードが漏えいしても、攻撃者には今この瞬間あなたのシークレットだけが生成できるコードが依然として必要なのです。
「TOTP アルゴリズムは HOTP アルゴリズムの時刻ベースの変種である…… TOTP = HOTP(K, T)。ここで T は、初期カウンター時刻 T0 と現在の Unix 時刻との間の時刻ステップ数を表す整数である。」—— RFC 6238、第 4 節
本ツールは 1 つのページで 3 つの仕事をこなします。任意の Base32 シークレットから、カウントダウンと次のコードのプレビュー付きのライブコードを生成します。まったく新しいシークレットをセットアップし、認証アプリにスキャンする otpauth:// URI と QR コードを構築します。そして、実際のサーバーがちょうど回転したコードを受け入れるのと同じように、±1 時刻ステップの許容でコードをシークレットに対して検証します。これらすべてが、依存関係ゼロ・ネットワーク呼び出しゼロで、ブラウザのネイティブ Web Crypto API を通じて動作します。
開発者は TOTP ジェネレーターを頻繁に使います。2FA ログインのデバッグ中にユーザーのアプリが表示する正確なコードを再現するため、新しいアカウント用のシークレットと QR を作成するため、サーバー側の検証ウィンドウがユーザー体験と一致することを確認するため、あるいは二要素フローのエンドツーエンドテスト用に決定的なフィクスチャを構築するためです。シークレットは長期間有効な鍵であり —— それを持つ者は誰でも将来のすべてのコードを生成できるため —— パスワードのように保護しなければなりません。2FA に付随する強力なパスワードやリカバリーコードには本ツールとランダムパスワードジェネレーターを組み合わせ、単体の登録用画像が必要なときはQR コードジェネレーターを組み合わせてください。認証済みセッションの上に乗ることの多い JSON Web Token に署名するには、JWT エンコーダーをご覧ください。
// Generate a TOTP code in the browser with the Web Crypto API
// (SHA-1, 6 digits, 30s period — RFC 6238 defaults)
async function generateTotp(base32Secret, time = Date.now()) {
// Decode the Base32 secret to raw bytes (A-Z, 2-7)
const alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
let bits = '';
for (const c of base32Secret.replace(/=+$/, '').toUpperCase())
bits += alpha.indexOf(c).toString(2).padStart(5, '0');
const bytes = new Uint8Array(
bits.match(/.{8}/g).map((b) => parseInt(b, 2)));
// Counter = number of 30s steps since the Unix epoch (8-byte big-endian)
const counter = Math.floor(time / 1000 / 30);
const msg = new Uint8Array(8);
let c = counter;
for (let i = 7; i >= 0; i--) { msg[i] = c & 0xff; c = Math.floor(c / 256); }
const key = await crypto.subtle.importKey(
'raw', bytes, { name: 'HMAC', hash: 'SHA-1' }, false, ['sign']);
const hmac = new Uint8Array(await crypto.subtle.sign('HMAC', key, msg));
// Dynamic truncation (RFC 4226) -> 6-digit code
const off = hmac[hmac.length - 1] & 0x0f;
const bin = ((hmac[off] & 0x7f) << 24) | (hmac[off + 1] << 16) |
(hmac[off + 2] << 8) | hmac[off + 3];
return (bin % 1_000_000).toString().padStart(6, '0');
}
const code = await generateTotp('JBSWY3DPEHPK3PXP');
// -> a 6-digit code that rotates every 30 seconds 主な機能
カウントダウン付きのライブコード
Base32 シークレットを貼り付けると、現在の TOTP コードが 30 秒のカウントダウンリングと次のコードのプレビュー付きで即座に表示されます —— 生成ボタンも待ち時間もありません。
シークレットと QR のセットアップ
ランダムな Base32 シークレットを生成し、otpauth:// URI と、Google Authenticator、Authy、1Password にそのままスキャンできる QR コードを取得します。
組み込みのコード検証機能
実際のサーバーが使うのと同じ ±1 時刻ステップの許容でコードをシークレットに対して照合するため、ちょうど回転したばかりのコードも依然として有効です。
設定可能なアルゴリズムと桁数
SHA-1、SHA-256、SHA-512 を切り替え、6 桁か 8 桁を選び、30 秒か 60 秒の周期を設定して、あらゆるプロバイダーの要件に合わせられます。
シークレットはブラウザから外に出ない
すべてのコードはネイティブの Web Crypto API でローカルに計算されます。何もアップロード・記録・保存されません —— オフラインでも検証できる形で。
依存関係ゼロ
ブラウザの Web Crypto API のみで構築 —— サードパーティのライブラリも、テレメトリも、いかなる種類のネットワーク呼び出しもありません。
TOTP ジェネレーターの例
標準的な 6 桁 TOTP(SHA-1、30 秒)
secret: JBSWY3DPEHPK3PXP algorithm: SHA-1 digits: 6 period: 30s
Code: 282760 · expires in 30s
主要なアプリがすべて使うデフォルト設定 —— SHA-1、6 桁、30 秒周期 —— を用いた RFC 6238 の代表的なテストシークレットです。コードは時刻ベースなので、正確な値は現在時刻に依存します。本ツールはリアルタイムのカウントダウンと次のコードを表示します。
8 桁のエンタープライズ TOTP(SHA-256)
secret: JBSWY3DPEHPK3PXP algorithm: SHA-256 digits: 8 period: 30s
Code: 31094217 · expires in 30s
一部のエンタープライズや高セキュリティのシステムは、デフォルトの SHA-1 ではなく SHA-256 で署名された 8 桁コードを発行します。アルゴリズム、桁数、周期をサーバーが期待するものと正確に一致させてください。そうしないと生成されたコードは検証を通りません。
認証アプリ向けの otpauth:// セットアップ URI
issuer: Acme account: alice@example.com secret: JBSWY3DPEHPK3PXP
otpauth://totp/Acme:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Acme&algorithm=SHA1&digits=6&period=30
本ツールは標準的な otpauth:// URI を構築し、それを QR コードとして表示します。Google Authenticator、Authy、1Password でスキャンするか、URI を直接貼り付けることで、デバイスにシークレットを登録できます。
TOTP ジェネレーターの使い方
- 1
Base32 シークレットを貼り付ける
生成タブで Base32 シークレット(例: JBSWY3DPEHPK3PXP)を貼り付けます。現在の TOTP コードが 30 秒のカウントダウンとともに即座に表示されます —— 生成ボタンは不要です。
- 2
詳細オプションを調整する(任意)
詳細オプションを開いて、アルゴリズム(SHA-1/256/512)、桁数(6 または 8)、周期(30 または 60 秒)を変更し、プロバイダーが発行したものに合わせます。
- 3
セットアップまたは検証する
セットアップタブで認証アプリ用のシークレットと QR を生成するか、検証タブで ±1 時刻ステップの許容のもとシークレットに対してコードを照合します。
よくある間違い
アルゴリズムや桁数の不一致
SHA-256 や 8 桁用に発行されたシークレットは、SHA-1 / 6 桁のデフォルトのもとではまったく異なるコードを生成します。プロバイダーのパラメーターに正確に合わせてください。
secret + SHA-1/6 digits // but server expects SHA-256/8
algorithm: SHA-256, digits: 8 // match the otpauth:// URI
時計のずれ
デバイスの時計が 1 時刻ステップ以上ずれていると、コードは検証を通りません。コードを比較する前にシステムの時計を同期してください。
system clock 90s fast // code is two steps ahead
enable NTP / automatic time // code aligns with server
無効な Base32 シークレット
Base32 は A–Z と 2–7 のみを使います。印刷された鍵のスペースは問題ありませんが、0、1、8 は有効な Base32 ではなく、デコードに失敗します。
secret: "JBSW 0NE8" // contains 0 and 8
secret: "JBSWY3DPEHPK3PXP" // valid Base32
よくある用途
- 2FA ログインフローをデバッグする
- ユーザーの認証アプリが表示する正確なコードを再現し、二要素サインインが拒否される理由を追跡します。
- 新しいアカウントを登録する
- 新しい Base32 シークレットと QR コードを生成し、それを Google Authenticator、Authy、1Password にスキャンして 2FA を設定します。
- サーバーのウィンドウを検証する
- シークレットに対してコードを検証し、バックエンドがちょうど回転したコードを受け入れ、期限切れのコードを拒否することを確認します。
- エンドツーエンドのテストフィクスチャを構築する
- 既知のシークレットから決定的な TOTP コードを計算し、二要素認証フローの自動テストを駆動します。
- エンタープライズ設定に合わせる
- プロバイダーが SHA-1 / 6 桁のデフォルトから外れる場合に、8 桁や SHA-256 のコードを再現して不一致をデバッグします。
- アクセスを素早く回復する
- スマートフォンが使えないとき、バックアップしたシークレットから現在のコードを生成します —— シークレットの使い捨てコピーを使って。
技術的な詳細
- RFC 6238 / RFC 4226 準拠
- RFC 4226 の HOTP 動的切り捨てアルゴリズムの上に RFC 6238 に従って TOTP を実装し、SHA-1、SHA-256、SHA-512 を選択できます。
- ネイティブ Web Crypto HMAC
- コードは、ビッグエンディアンの時刻ステップカウンターに対する crypto.subtle HMAC で導出されます。Base32 のデコードと切り捨ては完全にブラウザ内で実行されます。
- 標準的な otpauth:// URI、依存関係ゼロ
- セットアップ URI は、発行者・アルゴリズム・桁数・周期のパラメーターを備えた Key Uri Format(otpauth://totp)に従います。外部ライブラリもネットワーク呼び出しもありません。
ベストプラクティス
- シークレットをパスワードのように扱う
- Base32 シークレットを持つ者は誰でも将来のすべてのコードを生成できます。シークレットマネージャーに保管し、決してソース管理に入れず、ここではテスト用シークレットを優先してください。
- 時計を同期しておく
- TOTP は正確な時刻に依存します。サーバーとデバイスでネットワーク時刻同期を有効にし、コードが検証ウィンドウ内に揃うようにします。
- 必要でない限りデフォルトを守る
- SHA-1、6 桁、30 秒周期はアプリの互換性を最大化します。プロバイダーが義務付ける場合にのみ 8 桁や SHA-256/512 に切り替えてください。
TOTP / 2FA ジェネレーター FAQ
オンラインの TOTP / 2FA ジェネレーターは安全に使えますか?
otpauth:// URI、生成されるコードはすべて、ネイティブの Web Crypto API でローカルに計算されます。ネットワークリクエスト、ログ記録、ストレージ、入力に紐づく分析は一切ありません —— インターネットを切断してもツールが動き続けることで、これを確認できます。これは、あなたのシークレットをサーバーへ POST する怪しいジェネレーター(運営者が永久にあなたのコードを生成できてしまう)とは正反対です。TOTP シークレットは長期間有効な共有鍵なので、単に試したいだけのときは使い捨てのシークレットやテスト用シークレットを優先するのが、依然として最も安全な習慣です。 TOTP とは何ですか、Base32 シークレットとは何ですか?
JBSWY3DPEHPK3PXP はよく知られた RFC のテストシークレットです。 生成されたコードがスマートフォンの認証アプリと異なるのはなぜですか?
TOTP と HOTP の違いは何ですか?
8 桁コードや SHA-256 / SHA-512 を使えますか?
otpauth:// URI にはこれらのパラメーターが記録されるため、アプリがシークレットを正しく登録できます。 このシークレットを Google Authenticator、Authy、1Password に追加するにはどうすればよいですか?
otpauth:// URI をコピーします。Google Authenticator や Authy では、追加ボタンをタップしてQR コードをスキャンを選び、カメラを画面の QR に向けるか、セットアップキーを入力を選んで、対応するアカウント名とアルゴリズムとともに Base32 シークレットを貼り付けます。1Password では、ログイン項目を編集してワンタイムパスワードフィールドを追加し、otpauth:// URI を直接貼り付けます。ドキュメント用の単体の QR 画像が必要ですか? QR コードジェネレーターをお使いください。また、その周辺のランダムシークレットやリカバリーコードには、ランダムパスワードジェネレーターをどうぞ。 関連ツール
すべてのツールを見る →Bcrypt ハッシュ生成・検証ツール
セキュリティツール
bcrypt パスワードハッシュをオンラインで生成・検証。コスト調整、$2b$/$2a$/$2y$ プレフィックス対応。100% ブラウザ内で処理し、パスワードは一切送信されません。
JWT デコーダー — オンライン解析ツール
セキュリティツール
JWTトークンを無料のJWTデコーダーでオンラインデコード。ヘッダー、ペイロード、署名、有効期限、アルゴリズム、クレームを即座に検査できます。100%ブラウザ動作 — トークンはデバイスから外に出ません。登録不要、追跡なし。
JWT エンコーダー&ジェネレーター
セキュリティツール
無料のオンラインJWTジェネレーター&エンコーダー。ヘッダーとペイロードを組み立て、HS256、RS256、ES256で即座に署名できます。100%ブラウザ動作 — シークレットと鍵はデバイスから外に出ません。
無料 JWT シークレット生成ツール — HS256/384/512
セキュリティツール
HS256/384/512 向けの強力で RFC 準拠の JWT シークレットを生成。100% ブラウザ内で処理し、サーバーには一切送信されません。base64url・base64・hex で .env 用にコピー。
MD5ハッシュジェネレーター&ファイルチェックサムツール
セキュリティツール
無料オンラインMD5ハッシュ生成ツール。ブラウザ上でMD5・SHA-256・SHA-1・SHA-512のハッシュ値を即座に生成。テキストやファイルのチェックサム検証・比較、ワンクリックコピー対応。登録不要でデータはサーバーに送信されません。
ランダムパスワード生成 — カスタマイズ可能&安全
セキュリティツール
無料のオンラインランダムパスワード生成ツール。ブラウザ上で安全な強力パスワードを即座に自動生成できます。長さや文字種のカスタマイズ、最大50個の一括生成に対応。エントロピー分析付き強度メーター搭載。データはサーバーに送信されません。