ツール
ガイド

TOTP / HOTP 二要素認証ジェネレーター

暗号

Base32 シークレットまたは otpauth:// URI から時間ベース(TOTP)またはカウンターベース(HOTP)のワンタイムパスワードを生成します。ライブカウントダウンとスキャン可能な QR コード — すべてブラウザ内でローカル処理。

100% クライアントサイド バックエンドなし

リモート URL の取得は行いません。JSON を直接貼り付けてください。

モード
Base32 シークレット(または otpauth:// URI)を入力してコードを生成します。
TOTP
------
--
otpauth URI

Google Authenticator、Authy、1Password などの TOTP アプリでスキャンできます。

コードはローカルで生成されます — シークレットはブラウザから外に出ません。
このページの内容

TOTP とは?#

時間ベースのワンタイムパスワード(TOTP)は、認証アプリが各アカウントの隣に表示するローテーションする 6 桁のコードです。内部では HMAC です: 共有シークレットと現在の時間枠が一緒にハッシュされ、結果が短い数字コードに切り詰められます。コードは時計に依存するため、30 秒ごとに自動で切り替わります——これが、携帯とサービスの間のネットワーク往復なしに「所持するもの」(シークレット)を第 2 要素として利用できるようにする仕組みです。

このページは完全に機能する TOTP および HOTP ジェネレーターです。TOTP は現在時刻からコードを導き出し、周期が過ぎると自動で更新します。HOTP は使用ごとに進むカウンターから導き出します。Base32 シークレットを直接入力するか、otpauth:// URI(サービスが 2FA の有効化時に示す QR コードにエンコードされた文字列)を貼り付け、すべてのフィールドを自動で埋めることもできます。ページは標準的な otpauth:// URI も出力し、スキャン可能な QR コードを描画するため、ここから直接電話アプリに新しいアカウントをプロビジョニングできます。

すべてはローカルで走ります: シークレットがページから外に出ることはなく、認証サービスへのオンライン呼び出しもありません。

使い方#

  1. モードを選びます: TOTP(時間ベース、自動更新)またはHOTP(カウンターベース、手動で進む)。
  2. シークレットを提供します。**シークレット(Base32)**フィールドに Base32 シークレットを貼り付けるか、otpauth:// URI フィールドに URI を貼り付けてすべてのパラメータを一度に自動入力します。
  3. 発行者とアカウントラベルを設定します(これらは認証アプリ内でのエントリの名前にしか影響せず、コード自体には影響しません)。
  4. アルゴリズム(SHA-1 / SHA-256 / SHA-512——SHA-1 が普遍的な既定)、桁数(6 / 7 / 8——6 が標準)、そして TOTP の場合は周期(秒)(既定 30)を選びます。HOTP の場合はカウンターを設定し、使用後に +1 で進めます。
  5. 生成をクリックします。コードが大きく表示され、現在の周期の残り秒数を示すカウントダウンリングが付きます。その下に otpauth:// URI とスキャン可能な QR コードが現れます。

主な特徴#

  • TOTP と HOTP を 1 箇所で。 シークレットを再入力せずに、時間ベースとカウンターベースの切替ができます。
  • 寛容な Base32 扱い。 スペース、ハイフン、小文字、迷いの文字は自動的に清掃されるため、扱いにくい形式からコピーしたシークレットも機能します。
  • URI のインポートとエクスポート。 otpauth:// URI を貼り付けてすべてのフィールドを埋めるか、生成された URI をコピーして別の場所に新しいアカウントをプロビジョニングできます。
  • ライブ QR コード。 URI からページ内で描画され、どの認証アプリにもスキャンできる状態です。
  • カウントダウンリング。 次の切り替えまでの視覚的カウントダウンで、今打とうとしているコードに十分な残り時間があるかが分かります。
  • ゼロアップロード。 生成、解析、QR 描画はすべてローカルです。シークレットが送信されることはありません。

実例#

RFC 6238 の参照シードは ASCII 文字列 12345678901234567890 で、Base32 では GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ です。そのシークレットを入力し、桁数 8、周期 30 に設定すると、コードは公開テストベクトルと正確に一致します:

  • SHA-1、エポックからの 59 秒時点 → 94287082
  • SHA-256、同瞬間 → 46119246
  • SHA-512、同瞬間 → 90693936

time = 1111111109(遠い未来の日付)では、SHA-1 は 07081804 を生成します。これらはこのツール自身のテストスイートが照らし合わせる既知応答値であり、生成器が正しいことを確認する信頼できる方法です。日常の 2FA では、サービスは 6 桁、SHA-1、30 秒周期を使います——桁数を 6 に戻せば、同じシークレットが認証アプリが表示するローテーションコードを生成します。

よくある質問#

コードが電話アプリと一致しません。どうしましたか?#

ほぼ常にシークレットか時計です。まず Base32 シークレットが同一であることを確認してください——サービスの設定ページからもう一度コピーします。1 文字でも違えばすべてが変わります。次にパラメータを確認します: ほとんどのサービスは SHA-1、6 桁、30 秒周期を使い、サービスが SHA-256 や 8 桁を使うのに SHA-1 / 6 を選んでいれば、コードは異なります。最後に、デバイスの時計が正しいことを確認してください——TOTP はわずかなずれは許容しますが、30 秒以上ずれると壊れます。

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

TOTP は移動要素として現在時刻を使うため、毎周期ごとに自働で進みます。HOTP はコードが消費されるたびに増分する単純なカウンターを使うため、両側が何個のコードが使われたかについて同期を保たなければなりません。TOTP が今日のほぼすべてのコンシューマー 2FA フローで使われるのは、時計以外の同期を必要としないからです。

自分のシークレットをウェブページに入れるのは安全ですか?#

シークレットがこのページから外に出ることはありません——生成、解析、QR 描画はすべてブラウザ内でローカルに走り、ネットワーク呼び出しはありません。とはいえ、あなたが管理する本番の 2FA シークレットについては、最も安全な慣行は、ウェブページではなく完全に信頼する環境で生成・保存し、サービスがくれたリカバリーコードを保管しておくことです。

otpauth:// URI を貼りるとすべてが埋まるのはなぜですか?#

その URI が認証アプリ同士が交換する標準形式だからです: 型、発行者、アカウント、シークレット、アルゴリズム、桁数、周期(またはカウンター)を 1 つの文字列にエンコードします。パーサーがそれらのフィールドを読み出してフォームを埋めます——電話で QR コードをスキャンしたときに起こることと正確に同じです。QR はその URI を画像として描画したものに過ぎません。