TOTPジェネレーター(2FAコード)

Base32のシークレットから、SHA-1/256/512、6〜8桁、任意の周期で時間ベースのワンタイムパスワード(TOTP)を生成。ライブのカウントダウン付きで、RFC 6238に準拠しています。

2FA 設定時にサービスが表示するキーです。スペースや小文字が含まれていても構いません。

空欄なら現在時刻を使います。

TOTP(RFC 6238)は、カウンター T = floor(Unix 時刻 / 周期) で HOTP を計算します。多くのアプリは SHA-1・6 桁・30 秒を使用します。端末の時計が正確である必要があります。キーはブラウザーの外に送られませんが、パスワードと同様に扱ってください。

すべてブラウザ内で実行されます。データがアップロードされることはありません。

TOTPジェネレーター(2FA)とは?

認証アプリが表示するのと同じ6〜8桁のコードを、Base32のシークレットキーから計算します。カウントダウン付きでリアルタイムに更新され、前後のコードも表示し、サーバーのテスト用に任意のUnix時刻のコードも計算できます。

TOTPジェネレーター(2FA)の使い方

  1. シークレットキー(Base32)を貼り付けるか、新しいランダムなキーをクリックします。
  2. アルゴリズム、桁数、Periodをサービスに合わせて設定します(通常はSHA-1、6、30)。
  3. 現在のコードと残り秒数を確認します。
  4. 必要に応じてUnix timeを入力し、特定の時刻のコードを計算します。

例

入力
Secret GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ, SHA-1, 8 digits, Unix time 59
出力
94287082

RFC 6238 付録Bのテストベクターです(シークレットはASCIIの12345678901234567890をBase32にしたものです)。

TOTPジェネレーター(2FA)を使うべき場面

2FAの実装のテスト、シークレットを持っている場合のデスクトップでのコードの確認、TOTPの仕組みの理解に使います。実際のアカウントのシークレットをブラウザのタブに残さず、認証アプリやパスワードマネージャーを使ってください。

TOTPジェネレーター(2FA)の仕組み

TOTP(RFC 6238)は、カウンター T = floor(Unix時間 / 周期) を使ってHOTP(RFC 4226)を計算します。Base32デコードしたシークレットを鍵として、8バイトのビッグエンディアンのカウンターをHMAC-SHA-1/256/512で処理し、動的切り捨て(オフセット = 最後のニブル)と 10^桁数 での剰余を行います。HMACはWeb Crypto APIで計算されます。RFC 6238の付録Bのテストベクターはすべて正確に再現されます。

一般的な使用例

  • 開発中のWebアプリでのTOTPログインのテスト
  • コードの比較によるサーバー時計のずれの確認
  • RFC 6238のテストベクターの再現
  • CIのドキュメント用のテストアカウントのコード生成

セキュリティ注意事項

TOTPのシークレットはパスワードと同じくらい機密性が高く、それを持つ人は誰でもあなたのコードを生成できます。

よくある質問

コードがアプリと一致しないのはなぜですか?

アルゴリズム、桁数、周期が一致しているか、またコンピューターの時計が正確かを確認してください。30秒の時計のずれでコードは変わります。

シークレットはどこかに送信されますか?

いいえ。HMACはWeb Cryptoを使ってブラウザ内で計算されます。

どのBase32アルファベットを使いますか?

RFC 4648のA–Zと2–7です。スペース、ダッシュ、小文字、=のパディングは受け付けられ、無視されます。

他のカテゴリを見る