HOTP 生成器

由 Base32 密钥为任意计数器生成 HOTP 一次性密码,支持 SHA-1/256/512 和 6–8 位数字。列出后续验证码;已通过 RFC 4226 向量验证。

设置双重验证时服务提供的密钥。可以包含空格和小写字母。

HOTP(RFC 4226):用密钥对 8 字节计数器做 HMAC,再动态截断并对 10^位数 取模。服务器和令牌各自维护一个计数器,每使用一个验证码就递增。

完全在浏览器中运行,您的数据不会被上传。

什么是 HOTP 生成器?

HOTP 在每次计数器增加时生成新的一次性密码,YubiKey 的 OATH-HOTP 和一些硬件令牌就是这样使用的。此工具计算任意计数器值的验证码,并列出后续的验证码,以便你重新同步或测试服务器。

如何使用 HOTP 生成器

  1. 粘贴密钥(Base32),或点击生成随机密钥。
  2. 设置算法和数字。
  3. 输入计数器以及显示的验证码数量。
  4. 复制第一个验证码,或查看 计数器 → 验证码 的表格。

示例

输入
Secret GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ, SHA-1, 6 digits, counter 0
输出
755224 (then 287082, 359152, 969429, 338314 for counters 1–4)

RFC 4226 附录 D 的测试值。

何时使用 HOTP 生成器

适用于测试 HOTP 的实现、重新同步令牌的计数器,或了解一次性密码是如何派生的。对于大多数应用使用的基于时间的验证码,请使用 TOTP 生成器。

HOTP 生成器 的工作原理

HOTP(K, C) = Truncate(HMAC(K, C)) mod 10^位数,其中 C 是 8 字节大端计数器。动态截断从由最后一个 HMAC 字节的低 4 位给出的偏移处取 4 个字节,并清除最高位。HMAC 由 Web Crypto API 计算;RFC 4226 附录 D 的所有数值都能重现。

常见用例

  • 测试 HOTP 登录实现
  • 找出失去同步的硬件令牌的计数器
  • 重现 RFC 4226 测试值
  • 讲解动态截断步骤

常见问题

HOTP 和 TOTP 有什么区别?

HOTP 使用随每个验证码递增的事件计数器;TOTP 则把当前时间除以周期作为计数器。

如果计数器失去同步会怎样?

服务器通常接受向前查看几个计数器值的窗口,然后重新同步到匹配的那个。

需要什么密钥格式?

Base32(RFC 4648),与 otpauth:// URI 和验证器设置界面所用的格式相同。

探索更多分类