TOTP コード生成ツール

base32 シークレットから、桁数と時間周期を選んで TOTP の二要素認証コードをブラウザー内でリアルタイムに生成します。

ツールを読み込み中…

TOTP コード生成ツールbase32 のシークレットを貼り付けると、対応する TOTP 二要素認証コードが、Google Authenticator や Authy とまったく同じように毎秒更新されます。6 桁か 8 桁、30 秒(または任意)の周期を選べ、必要なときには新しいランダムなシークレットも生成できます。すべて Web Crypto API の HMAC-SHA1 でローカルに計算されるため、シークレットがブラウザーの外に出ることはありません。

TOTP コード生成ツールとは?

TOTP コード生成ツールは、base32 の共有シークレットを、Google Authenticator・Authy・Microsoft Authenticator などの認証アプリが生成するのと同じ時間ベースのワンタイムパスワード(TOTP)に変換する無料のオンラインツールです。開発者や QA エンジニアは、二要素認証フローのテスト、otpauth:// URI のキーが手元にあるときのアクセス復旧、QR コードをスキャンせずに 2FA 設定が正しく動くかの確認に使います。RFC 4226 の HOTP の上に RFC 6238 を実装しており、時間カウンターの HMAC-SHA1 を計算して動的トランケーションを施し、周期ごとに切り替わる 6 桁または 8 桁のコードを得ます。コードと残り秒数のカウントダウンは毎秒リアルタイムで更新され、ボタン一つで新しいテストアカウント用に暗号学的にランダムな base32 シークレットを発行できます。

TOTP コード生成ツールの使い方

  1. 「シークレット」欄に base32 シークレットを貼り付けるか、「シークレット生成」を押して新しいランダムなものを作成します。空白とハイフンは無視されます。
  2. サービスが求める桁数に合わせて 6 桁か 8 桁を選びます。
  3. 「周期」を秒単位で設定します(30 がほぼすべての認証アプリで使われる標準値です)。
  4. 「コード」欄で現在のコードを読み取ります。自動で更新され、カウントダウンが有効な残り時間を示します。
  5. カウントダウンが 0 になる前にコピーボタンでコードをコピーするか、次のコードが入るのを待ちます。

使用例

標準的な 6 桁・30 秒のコード(一般的なケース)

JBSWY3DPEHPK3PXP のようなシークレットを貼り付け、桁数を 6、周期を 30 のままにします。「コード」欄に 30 秒ごとに変わる 6 桁の数字が表示され、同じ瞬間に同じシークレットで Google Authenticator が表示するものと一致します。

より厳格な設定向けの 8 桁コード

より長いワンタイムパスワードを要求するサービス向けに桁数を 8 に切り替えます。同じシークレットから 8 桁のコードが得られ、選んだ周期で切り替わり続けます。

テストアカウント用に新しいシークレットを生成

「シークレット生成」を押して新しいランダムな 20 バイトの base32 キーを作成し、その同じシークレットを設定中のアプリやサービスに入力すると、両者が一致するコードを生成します。

よくある質問

シークレットはどこかにアップロードされますか?
いいえ。base32 シークレットはブラウザー内に留まります。コードは Web Crypto API(HMAC-SHA1)でローカルに計算され、何もサーバーに送信・保存されないため、ツールはオフラインで動作し、シークレットがページの外に出ることはありません。
コードが認証アプリと一致しないのはなぜですか?
TOTP は現在時刻と、正確なシークレット・桁数・周期に依存します。桁数(6 か 8)と周期(通常 30 秒)がサービスと一致しているか、シークレットを完全に貼り付けたか、端末の時計が正確かを確認してください。大きな時刻ずれはコードをずらします。
シークレットはどんな形式である必要がありますか?
文字 A-Z と数字 2-7 を使う base32 文字列で、otpauth:// 設定 URI や QR コードの下に表示されるエンコードと同じものです。空白・ハイフン・小文字・末尾の = パディングは受け付けます。それ以外の文字は無効として表示されます。
どのアルゴリズムと標準を使っていますか?
HMAC-SHA1 を用いて RFC 4226 の HOTP の上に RFC 6238 の TOTP を実装しています。これはほぼすべての認証アプリが使う既定値です。現在 SHA-256 や SHA-512 の派生は提供していません。
貼り付ける代わりにここでシークレットを生成できますか?
はい。「シークレット生成」は crypto.getRandomValues で暗号学的にランダムな 20 バイトのキーを作成し base32 にエンコードするので、保護したいアプリにそのまま登録できます。

関連ツール