ガイド

ワンタイムパスワード (TOTP/HOTP) とランダムな確認コードを生成する方法

Base32形式のシークレットからRFC準拠のTOTPおよびHOTPワンタイムパスワードを生成する方法を解説。設定手順やパラメーターの注意点も網羅。

ツール OTPジェネレーター

Base32形式のシークレットキーを入力し、モード(TOTPまたはHOTP)と桁数、更新期間やカウンター値を指定することで、認証用のワンタイムパスワードを即座に生成できます。初期状態では6桁、30秒更新のTOTPが設定されています。

TOTPとHOTPの違いと生成の仕組み

二要素認証(2FA)で広く使われる認証コードには、主に時間同期型のTOTP(RFC 6238)とカウンター同期型のHOTP(RFC 4226)の2種類があります。OTPジェネレーターは、Base32形式の秘密鍵からHMAC-SHA1アルゴリズムを用いて認証コードを計算します。TOTPは現在時刻を基準に周期ごとに新しいコードへ変わり、HOTPは指定した整数カウンターの値に応じてコードが切り替わります。

ワンタイムパスワードを生成する手順

  1. Base32形式のシークレットキーを入力します。文字列内の前後の空白や大文字小文字は自動で調整されます。
  2. モードを時間基準の「TOTP」またはカウンター基準の「HOTP」から選択します。
  3. コードの桁数を「6」または「8」から選びます(既定値は6)。
  4. TOTPの場合は更新期間(秒)を指定します(既定値は30秒)。HOTPの場合は整数でカウンター値を入力します。
  5. 実行すると、生成されたコードとTOTPモード時の残り有効秒数が表示されます。

二次元コード形式での登録や共有を行いたい場合は、QRコード生成ツールの併用が便利です。

具体的な生成例

シークレットキー「JBSWY3DPEHPK3PXP」を使用し、モードを「TOTP」、桁数を「6」、更新期間を「30」秒として実行すると、現在の時刻ステップに基づいた6桁の数字コードと、その周期の残り秒数が算出されます。

制限事項

  • シークレットキーが有効なBase32形式でない場合、計算は行われません。
  • パラメーター(桁数、期間、カウンター)には整数値のみ使用可能です。

よくある間違い

  • 期間やカウンターに小数や文字列、負数を入力するとエラーになります。
  • 端末の時計が大きくずれている環境では、TOTPの有効判定が一致しない場合があります。

よくある質問

入力したシークレットキーは保存されますか?

ツール上で計算処理のみが行われ、結果画面にもシークレットは出力されません。

HOTPのカウンター値はどのように指定しますか?

0以上の整数を指定します。認証を試行するたびにカウンター値を1ずつ増やして計算します。

Base32の小文字やパディング文字は使えますか?

はい。大文字への変換や不要なスペースの除去が自動で行われます。

ツール

OTPジェネレーター