TOTP 验证器

检查某个 TOTP 验证码对 Base32 密钥在当前或指定时间是否有效,并像真实的两步验证服务器那样提供可调的 ±步数窗口。

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

当前步前后的步数;默认周期下 1 = ±30 秒。

留空则使用当前时间。

与服务器的做法相同:先检查当前时间步,再检查允许偏差范围内的前后时间步。真实服务器还必须拒绝已经使用过的验证码。

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

什么是 TOTP 验证器?

输入密钥和验证码,检查验证码在现在或你指定的时间是否有效,并允许与认证服务器相同的时钟漂移窗口。结果会告诉你匹配的是哪个时间步,这有助于诊断时钟问题。

如何使用 TOTP 验证器

  1. 粘贴密钥(Base32)。
  2. 输入要校验的验证码。
  3. 设置算法、数字、周期和允许的时间偏差(步数);也可设置 Unix 时间。
  4. 点击验证并查看结果。

示例

输入
Secret GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ, 8 digits, Unix time 89, code 94287082, drift 1
输出
Valid: the code matches time step -1 (clock drift).

验证码来自上一个时间步,说明时钟存在漂移。

何时使用 TOTP 验证器

适用于调试失败的两步验证登录、测试你的实现的偏差窗口,或检查硬件令牌的验证码。真实的服务器还必须拒绝已使用过一次的验证码。

TOTP 验证器 的工作原理

先检查当前时间步 T = floor(时间 / 周期),然后依次检查 T−1、T+1、T−2……直至允许的偏差范围。每个时间步的验证码都按 RFC 4226/6238 用 HMAC 计算,并与输入的验证码比较。匹配时会报告其偏移量,例如验证码来自上一个 30 秒窗口时为 −1。

常见用例

  • 诊断由时钟漂移导致的两步验证登录失败
  • 测试 TOTP 实现的接受窗口
  • 验证硬件令牌的验证码
  • 讲解 TOTP 验证的工作方式

常见问题

服务器应该允许多大的偏差窗口?

RFC 6238 建议为应对网络延迟最多回退一个步;许多服务器接受 ±1 步(±30 秒)。

为什么登录后有效的验证码会被拒绝?

服务器必须记住已使用的验证码并再次拒绝它们,以防止重放攻击。

可以在这里验证 HOTP 验证码吗?

不可以,请使用 HOTP 生成器,并比较你预期的计数器值对应的验证码。

探索更多分类