首页

TOTP 和 HOTP 的区别

TOTP 和 HOTP 都是一次性密码算法。本指南解释基于时间和基于计数器的 OTP 验证码在实际使用中的区别,以及为什么多数 Authenticator 设置密钥使用 TOTP。

TOTP 是什么意思

TOTP 表示 time-based one-time password,也就是基于时间的一次性密码。它使用共享 secret 和当前时间步,通常是 30 秒,生成当前 Authenticator 验证码。

HOTP 是什么意思

HOTP 表示 HMAC-based one-time password。它不使用当前时间,而是使用一个每次生成或验证后变化的计数器。

实际区别

TOTP 验证码会随着时间前进而过期,HOTP 验证码则依赖客户端和服务端计数器同步。如果 HOTP 计数器偏移,可能需要重新同步。

Authenticator 应用的默认方式

现代 Authenticator 设置页面和 otpauth://totp/ 二维码多数使用 TOTP。没有特别说明时,常见参数是 SHA-1、6 位和 30 秒周期。

本工具支持什么

本站专注于 2FA 和 MFA 使用的 TOTP 设置密钥。它不生成 HOTP 计数器验证码、短信验证码、邮箱验证码、推送确认或恢复码。

标准与参考资料

常见问题

Google Authenticator 用的是 TOTP 还是 HOTP?

很多兼容 Google Authenticator 的设置使用 TOTP。某些系统也可能支持 HOTP,但本网页工具专注于 otpauth://totp/ 和 Base32 TOTP 设置密钥。

可以把 HOTP secret 放进这个 TOTP 生成器吗?

不可以。HOTP 需要计数器值,而本生成器计算的是基于时间的 TOTP 验证码。如果服务明确提供 HOTP 设置,请使用支持 HOTP 的工具。

为什么大多数 2FA 验证码每 30 秒变化?

这是常见 TOTP 周期。验证码由共享 secret 和当前时间窗口生成,因此时间窗口变化时验证码也会变化。

如何判断 otpauth 链接是不是 TOTP?

TOTP 配置链接通常以 otpauth://totp/ 开头。HOTP 配置链接通常以 otpauth://hotp/ 开头,并依赖计数器相关行为。