開発者向け

TOTP (ワンタイムパスワード) コード確認

Base32形式の共有シークレットから、2段階認証アプリと同じ仕組みで時刻ベースのワンタイムパスワード (TOTP) を計算し、残り有効時間とともに表示します。処理はブラウザ内で完結します。

シークレットを入力してください

使い方

  1. 認証アプリ (Google Authenticator など) に登録したときの共有シークレット (Base32文字列。QRコードの代わりにテキストで表示される「セットアップキー」) を入力します。
  2. 入力すると、現在時刻から計算したワンタイムパスワードと、次のコードに切り替わるまでの残り秒数が表示され、1秒ごとに自動更新されます。
  3. 桁数 (6桁/8桁) や更新間隔 (既定30秒) をサービスの設定に合わせて変更できます。ほとんどのサービスは6桁・30秒です。

計算の根拠

TOTP (Time-based One-Time Password) は、IETF が策定する標準規格 RFC 6238 で定義されたワンタイムパスワード方式で、スマートフォンの2段階認証アプリの大半が採用しています。TOTP は、カウンタ値の代わりに現在のUNIX時刻を更新間隔 (既定30秒) で割った整数を「移動因子」として使う、RFC 4226 定義の HOTP (HMAC-based One-Time Password) の応用です。

計算手順は次のとおりです。(1) 共有シークレットをBase32復号してバイト列の鍵にする。(2) 移動因子 (UNIX時刻 ÷ 更新間隔の整数部分) を8バイトのビッグエンディアン整数にする。(3) 鍵と移動因子から HMAC-SHA1 (20バイトのハッシュ値) を計算する。(4) ハッシュ末尾1バイトの下位4bitを「オフセット」として使い、そこから4バイトを取り出して先頭1bitを0にマスクする「動的切り出し (Dynamic Truncation)」を行う (RFC 4226 第5.3節)。(5) 得られた31bit整数を 10 の桁数乗で割った余りを、桁数分0埋めして表示する。このツールはこの手順を Web Crypto API (crypto.subtle の HMAC-SHA1) でブラウザ内のみで実行しており、入力したシークレットはどこにも送信されません。

よくある用途

場面 使い方の例
2段階認証の設定確認 アプリ登録時に表示されたセットアップキーを入力し、実際に生成されるコードが認証アプリと一致するか確認する
バックアップコードの準備 認証アプリの入ったスマートフォンが使えない場合に備え、同じシークレットから手元で確認用にコードを算出する
開発中のTOTP実装のテスト 自作システムにTOTPを組み込む際、既知のシークレットに対して期待どおりのコードが出るかを手計算と比較する

共有シークレットはサーバーに送信されず、このページを閉じると消えます。自分が管理するシークレット以外は入力しないでください。

関連ツール

公開: 2026-10-20