HOTP 生成器
由 Base32 密钥为任意计数器生成 HOTP 一次性密码,支持 SHA-1/256/512 和 6–8 位数字。列出后续验证码;已通过 RFC 4226 向量验证。
设置双重验证时服务提供的密钥。可以包含空格和小写字母。
HOTP(RFC 4226):用密钥对 8 字节计数器做 HMAC,再动态截断并对 10^位数 取模。服务器和令牌各自维护一个计数器,每使用一个验证码就递增。
完全在浏览器中运行,您的数据不会被上传。
什么是 HOTP 生成器?
HOTP 在每次计数器增加时生成新的一次性密码,YubiKey 的 OATH-HOTP 和一些硬件令牌就是这样使用的。此工具计算任意计数器值的验证码,并列出后续的验证码,以便你重新同步或测试服务器。
如何使用 HOTP 生成器
- 粘贴密钥(Base32),或点击生成随机密钥。
- 设置算法和数字。
- 输入计数器以及显示的验证码数量。
- 复制第一个验证码,或查看 计数器 → 验证码 的表格。
示例
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 和验证器设置界面所用的格式相同。