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)の使い方
- シークレットキー(Base32)を貼り付けるか、新しいランダムなキーをクリックします。
- アルゴリズム、桁数、Periodをサービスに合わせて設定します(通常はSHA-1、6、30)。
- 現在のコードと残り秒数を確認します。
- 必要に応じて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です。スペース、ダッシュ、小文字、=のパディングは受け付けられ、無視されます。