piapia123
ja

TOTP / HOTP コード

エンコード

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

⚠️ 実際に使用中のアカウントのシークレットは入力しないでください。 ここは確かにローカルで計算しリクエストも送りませんが、ページはネットワークから読み込まれており —— そして TOTP のシークレットは第二要素の秘密そのもので、入手した者は有効なコードを出し続けられます。このツールはサービスから渡されたシークレットが使えるかの確認と、自動テストを書くときの期待値生成のためのものです。 アルゴリズムは 2 つの固定手順です:まずカウンタを求める(TOTP は現在の Unix 時刻をステップで割る、HOTP は指定した整数を使う)、次に HMAC と動的切り出し —— HMAC の最後のバイトの下位 4 ビットを開始位置とし、4 バイト読んで 31 ビットにマスクし、6 桁に落とします。同じシークレット・同じ時刻なら結果は同じで、お使いの認証アプリと 1 桁まで一致するはずです。 ⚠️ ここは「いまこのシークレットが何を出すか」を計算するだけで、検証は行いません —— 検証は候補をサーバーに送る行為で、オンラインの操作です。また、前後のウィンドウをいくつ受け付けるかはサーバー次第で、ここに並ぶ隣接コードは許容され得る範囲にすぎません。

機能

  • RFC 6238 / RFC 4226 に従って TOTP と HOTP を計算。両 RFC の公式テストベクタをすべて通過しています
  • ⚠️ ページの最初の行が「使用中のシークレットを入力しないでください」という注意 —— TOTP のシークレットは第二要素の秘密そのものです
  • アルゴリズムは SHA-1 / SHA-256 / SHA-512 から選択(大半のサービスは SHA-1 が既定)
  • ステップと桁数を変更可能(既定は 30 秒・6 桁で、一般的なアプリと同じ)
  • このウィンドウの残り秒数と現在のカウンタ値を表示
  • 前後のウィンドウのコードを表示でき、端末の時計がどれだけずれているか確認できます
  • HOTP モードではカウンタを直接指定でき、RFC のテストベクタとの照合に便利です
  • シークレットは小文字・空白・ハイフン・末尾パディングを許容。0・1・8・9 を含む場合は推測せずエラーにします

使い方

  1. ⚠️ テスト用アカウントのシークレットを使い、常用のものは避けてください
  2. Base32 シークレットを貼り付けます
  3. アルゴリズム・ステップ・桁数を合わせます(多くのサービスは SHA-1 / 30 秒 / 6 桁)
  4. 表示された 6 桁が認証アプリと完全に一致するはずです

よくある質問

認証アプリと結果が違うのはなぜですか?
可能性の高い順に:時刻のずれ —— TOTP は双方の時計に完全に依存し、30 秒以上ずれると隣のウィンドウになります。「前後のウィンドウ」を有効にして、アプリに表示されているコードがそこにないか確認してください。パラメータの不一致 —— アルゴリズム(SHA-1 / 256 / 512)、ステップ(30 秒か 60 秒か)、桁数(6 か 8 か)のいずれかが違えば結果も変わります。シークレットの書き写し間違い —— シークレットは A–Z と 2–7 のみで、手書きでは 0 を O、1 を I と書きがちですが、本ツールは 0/1 が現れた時点でエラーにします。
TOTP と HOTP の違いは何ですか?
違いはカウンタの出どころだけです。HOTP は双方が増やすカウンタを使い、1 回使うごとに 1 増えます —— しかしクライアントとサーバーの同期が一度崩れると二度と一致せず、ログインに失敗した押下もカウンタを消費します。TOTP は時刻をカウンタに使う(現在時刻 ÷ ステップ)ため、時計がおおよそ合っていれば状態を同期する必要がありません。代償は 30 秒という短いウィンドウと、正確な時計への強い依存です。
シークレットとコード、漏れると困るのはどちらですか?
シークレットです。 コードは 30 秒で失効し、ユーザー名とパスワードが揃わなければ意味がありません。一方シークレットは有効なコードを無限に生成できるもので、入手した者はいつでもログインでき、こちら側には何の異常も見えません。つまりシークレットの漏洩は第二要素が完全に無効化されたことを意味し、コードの漏洩はその 30 秒分に留まります。
このツールでコードが正しいか検証できますか?
できませんし、すべきでもありません。検証は候補をサーバーに送る行為で、サーバーを持たない静的サイトである当サイトは行いません。ここが答えるのは「いまこのシークレットが何を出すか」です —— ご自身の認証アプリと照合すれば十分で、一致していればシークレットとパラメータの両方が正しいと言えます。

関連ツール