🔢 HOTP(カウンタ式)ワンタイムパスワード生成

シークレットとカウンタを入力してください

RFC 4226で定義されたHOTP(HMACベースワンタイムパスワード)を、Base32形式のシークレットとカウンタ値から生成するツールです。TOTPが時刻に基づいてコードを変化させるのに対し、HOTPは操作のたびに1ずつ増えるカウンタに基づいてコードを生成します(ハードウェアトークンなどで使われる方式)。

使い方

  1. Base32形式のシークレットキーを入力します。
  2. カウンタ値を入力します(通常は0から開始し、認証のたびに1ずつ増やします)。
  3. 生成されたワンタイムパスワードが表示されます。

よくある質問

HOTPとTOTPの違いは何ですか?

どちらもRFC 4226のHMACベースOTPの仕組みを使っていますが、TOTP(RFC 6238)はカウンタの代わりに現在時刻を一定間隔で割った値を使うのに対し、HOTPは明示的なカウンタ(通常は認証成功のたびに1ずつ増加)を使います。

なぜカウンタを手動で増やす必要があるのですか?

サーバー側とクライアント側でカウンタの値がずれると正しいコードが生成されないため、実際の運用では認証成功時にサーバー・クライアント双方でカウンタを同期して増やす仕組みが必要です。このツールでは動作確認用に手動で±1できるようにしています。

このツールはRFC 4226のテストベクタで検証されていますか?

はい。実装はRFC 4226付録Dに記載されている公式テストベクタ(シークレット"12345678901234567890"、カウンタ0〜9)と完全に一致することを確認しています。