devtools-hub

TOTP / 2FA Generator

Base32シークレットから RFC 6238 準拠のワンタイムパスワードをブラウザで生成

開発者向けセキュリティ

Google AuthenticatorなどのアプリにあるBase32シークレットキーを入力するだけで、30秒ごとに更新される6桁のTOTPコードを生成。現在・前・次の3コードを表示し、カウントダウンバー付き。WebCrypto APIを使ったブラウザ内完結処理でOTP実装のデバッグに。

広告

TOTP / 2FA Code Generator

Google Authenticator などのアプリでシークレットキーを表示し、コピーして貼り付けてください

シークレットキーを入力するとコードが生成されます

すべての処理はブラウザ内で完結します。シークレットキーはサーバーに送信されません。 本番環境の 2FA シークレットの取り扱いには十分ご注意ください。

Features

  • Base32 シークレットキーを入力して即TOTP生成
  • 現在・前(-30秒)・次(+30秒)の3コードを同時表示
  • 30秒カウントダウンプログレスバー(残り5秒以下で赤色)
  • 30秒ごとに自動更新
  • WebCrypto API(HMAC-SHA1)をブラウザ内で処理 — 通信なし
  • コードをクリックでクリップボードにコピー


TOTP(RFC 6238)とは — 2段階認証の仕組みを理解する

TOTP(Time-based One-Time Password)はRFC 6238で定義されたワンタイムパスワードのアルゴリズムです。Google AuthenticatorやAuthyなどの2FAアプリはこの標準を使っています。シークレットキーと現在時刻からHMAC-SHA1で6桁のコードを生成します。

TOTPの生成ステップ

① シークレットキー(Base32)をバイト列にデコード。② 現在のUnix時刻を30秒で割って切り捨てた値(カウンター)を8バイトのbig-endianで表現。③ HMAC-SHA1でシークレットとカウンターを計算。④ 結果の最後のバイトの下位4ビットをオフセットとして4バイトを取り出し、最上位ビットをクリアして10の6乗で割った余りが6桁コードになります。

Base32エンコードとは

Base32はアルファベット大文字A-Zと数字2-7の32文字を使うエンコード方式です(RFC 4648)。Base64と違い数字0・1や大文字と見間違えやすい文字を避けているため、手入力での誤りが起きにくいという特徴があります。TOTPのシークレットキーの配布にBase32が使われる理由です。QRコードでスキャンする場合も内部的にはBase32文字列が埋め込まれています。

前後のコードが有効な理由

時刻のずれ(クロックスキュー)に対応するため、多くの2FA実装では現在のコードに加えて前後1ステップ(±30秒)のコードも有効と見なします。このツールでは前・現在・次の3コードを表示するため、時刻がわずかにずれている環境でのデバッグに役立ちます。

OTP実装のデバッグ用途

アプリにTOTP認証を組み込む際、生成したコードが正しいか確認するためにこのツールが使えます。同じBase32シークレットを使って、実装したコードとこのツールの出力が一致していれば正しく実装されています。WebCrypto APIのHMAC-SHA1をブラウザで直接実行するため、通信なしで安全に確認できます。

広告

Related Tools

base64-studio

Base64 エンコード & デコード

開発者向けテキストエンコード

使ってみる →

BOOTH

JSON Studio

JSON フォーマッター & バリデーター

JSON開発者向けフォーマッター

使ってみる →

BOOTH

color-deck

カラーコード変換 & パレット保存

カラーデザイン開発者向け

使ってみる →

BOOTH

text-deck

スニペットランチャー

テキスト効率化開発者向け

使ってみる →

BOOTH

このツールを共有する