Skip to content

TOTP / 2FA コードジェネレーター

Base32 シークレットから TOTP/2FA コードを即座に生成 — 100% ブラウザ内で動作し、シークレットがデバイスから外に出ることはありません。QR セットアップ + コード検証付き。無料、登録不要。

トラッキングなし ブラウザで動作 無料
お使いのブラウザ内でローカルに計算されます —— あなたのシークレットはデバイスから外に出ません
詳細オプション
現在のコード
------
次のコード: ------
RFC 6238 / RFC 4226 の動作に従い、出力を公開されたテストベクターおよび独立した認証アプリと照合済み — Go Tools セキュリティチーム · Jun 12, 2026

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. 1

    Base32 シークレットを貼り付ける

    生成タブで Base32 シークレット(例: JBSWY3DPEHPK3PXP)を貼り付けます。現在の TOTP コードが 30 秒のカウントダウンとともに即座に表示されます —— 生成ボタンは不要です。

  2. 2

    詳細オプションを調整する(任意)

    詳細オプションを開いて、アルゴリズム(SHA-1/256/512)、桁数(6 または 8)、周期(30 または 60 秒)を変更し、プロバイダーが発行したものに合わせます。

  3. 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 ジェネレーターは安全に使えますか?
本ツールについては、はい —— その理由は、何ひとつブラウザの外に出ないからです。入力した Base32 シークレット、otpauth:// URI、生成されるコードはすべて、ネイティブの Web Crypto API でローカルに計算されます。ネットワークリクエスト、ログ記録、ストレージ、入力に紐づく分析は一切ありません —— インターネットを切断してもツールが動き続けることで、これを確認できます。これは、あなたのシークレットをサーバーへ POST する怪しいジェネレーター(運営者が永久にあなたのコードを生成できてしまう)とは正反対です。TOTP シークレットは長期間有効な共有鍵なので、単に試したいだけのときは使い捨てのシークレットやテスト用シークレットを優先するのが、依然として最も安全な習慣です。
TOTP とは何ですか、Base32 シークレットとは何ですか?
TOTP(時刻ベースのワンタイムパスワード、RFC 6238 で定義)は、認証アプリで回転する 6 桁コードの背後にあるアルゴリズムです。共有シークレットと、固定ステップ(通常 30 秒)に分割した現在時刻を HMAC で組み合わせ、デバイスとサーバーが独立して計算できる短いコードを生成します。シークレットは共有鍵で、ほとんどの場合 Base32 —— 大文字 A–Z と数字 2–7 —— で書かれます。このアルファベットは大文字小文字を区別せず、入力や QR コードへのエンコードが容易だからです。文字列 JBSWY3DPEHPK3PXP はよく知られた RFC のテストシークレットです。
生成されたコードがスマートフォンの認証アプリと異なるのはなぜですか?
2 つの TOTP コードが一致するには、4 つの要素が合致する必要があります。第一に 時計です。TOTP は現在時刻に依存するため、パソコンやスマートフォンの時計が 1 ステップ以上ずれているとコードが乖離します —— システムの時計を同期してから再度お試しください。第二に アルゴリズムです。本ツールはデフォルトで SHA-1(多くのアプリが使うもの)ですが、シークレットが SHA-256 や SHA-512 用に発行されたものなら、ここでも同じものを選択する必要があります。第三に 桁数と周期です。6 桁と 8 桁、または 30 秒と 60 秒のウィンドウでは、まったく異なるコードになります。第四に シークレットそのもの —— Base32 の文字を 1 つでも打ち間違えると、すべてのコードが変わります。この 4 つを揃えれば、コードは一致します。
TOTP と HOTP の違いは何ですか?
どちらも同じ HMAC ベースのワンタイムパスワードの系統から来ていますが、コードを駆動するものが異なります。HOTPRFC 4226)はカウンターベースです。各コードはインクリメントするカウンターに結び付いており、コードは使用されてカウンターが進むまで有効なままです。TOTP(RFC 6238)は時刻ベースです。カウンターを、固定ステップに分割した現在時刻に置き換えるため、コードは 30 秒ごとに自動的に回転します。TOTP は実質的に、カウンターを Unix エポックからの時刻ステップ数に設定した HOTP にすぎません。本ツールは TOTP を生成します。これは Google Authenticator、Authy、1Password がデフォルトで使うものです。
8 桁コードや SHA-256 / SHA-512 を使えますか?
はい。詳細オプションを開いて アルゴリズムを SHA-256 または SHA-512 に切り替え、桁数を 8 に設定し、周期を 60 秒に変更できます。これらの設定が存在するのは、一部のエンタープライズや銀行システムがより長いコードやより強力なハッシュを必要とするからです。とはいえ、圧倒的多数のサービス —— そしてすべての主要なコンシューマー向け認証アプリ —— は SHA-1、6 桁、30 秒周期のデフォルトを使うため、プロバイダーのセットアップ手順に別の指示がない限りそのままにしてください。どれを選んでも、本ツールが生成する otpauth:// URI にはこれらのパラメーターが記録されるため、アプリがシークレットを正しく登録できます。
このシークレットを Google Authenticator、Authy、1Password に追加するにはどうすればよいですか?
セットアップタブに切り替えてシークレットを生成(または貼り付け)し、QR コードをスキャンするか 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個の一括生成に対応。エントロピー分析付き強度メーター搭載。データはサーバーに送信されません。