TOTP 验证器
检查某个 TOTP 验证码对 Base32 密钥在当前或指定时间是否有效,并像真实的两步验证服务器那样提供可调的 ±步数窗口。
设置双重验证时服务提供的密钥。可以包含空格和小写字母。
当前步前后的步数;默认周期下 1 = ±30 秒。
留空则使用当前时间。
与服务器的做法相同:先检查当前时间步,再检查允许偏差范围内的前后时间步。真实服务器还必须拒绝已经使用过的验证码。
完全在浏览器中运行,您的数据不会被上传。
什么是 TOTP 验证器?
输入密钥和验证码,检查验证码在现在或你指定的时间是否有效,并允许与认证服务器相同的时钟漂移窗口。结果会告诉你匹配的是哪个时间步,这有助于诊断时钟问题。
如何使用 TOTP 验证器
- 粘贴密钥(Base32)。
- 输入要校验的验证码。
- 设置算法、数字、周期和允许的时间偏差(步数);也可设置 Unix 时间。
- 点击验证并查看结果。
示例
输入
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 生成器,并比较你预期的计数器值对应的验证码。