TOTP & HOTP

TOTP(基于时间的一次性密码,RFC 6238)和 HOTP(基于 HMAC 的一次性密码,RFC 4226)是每个 2FA 注册 QR 实现的两个 RFC。编码后的 otpauth:// URI 方案是 Google Authenticator 的事实标准,与所有主流验证器应用兼容。

TOTP 规范:RFC 6238(基于时间,2011)。
HOTP 规范:RFC 4226(基于计数器,2005)。
URI 方案:Google Authenticator Key URI Format, 所有验证器应用达成共识的格式。

概述

2FA 注册 QR 是携带共享密钥及标识元数据的 otpauth:// 方案 URL。格式:

otpauth://TYPE/LABEL?secret=SECRET&issuer=ISSUER&algorithm=ALG&digits=N&period=SEC

标准测试向量

场景输入预期 otpauth:// URI
TOTP,最简(SHA1,6 位,30 秒)issuer=GitHub
account=alice@example.com
secret=JBSWY3DPEHPK3PXP
otpauth://totp/GitHub:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=GitHub
TOTP,SHA256,8 位issuer=Corp
account=bob
secret=JBSWY3DPEHPK3PXP
algorithm=SHA256
digits=8
otpauth://totp/Corp:bob?secret=JBSWY3DPEHPK3PXP&issuer=Corp&algorithm=SHA256&digits=8
HOTP,counter=0issuer=YubiKey
account=carol
secret=JBSWY3DPEHPK3PXP
counter=0
otpauth://hotp/YubiKey:carol?secret=JBSWY3DPEHPK3PXP&issuer=YubiKey&counter=0
TOTP,RFC 6238 参考密钥issuer=Example
account=test
secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ
digits=8
标准 RFC 测试密钥(12345678901234567890)。T=59 秒时生成 TOTP 94287082

实时 Base32 密钥验证器

验证器应用会拒绝包含 Base32 字母表(A-Z、2-7)以外字符的密钥。以下是 TOTP 生成器内联使用的同一验证器,在浏览器中运行。

请输入密钥进行验证。

常见陷阱

验证器应用兼容性

应用TOTP SHA1TOTP SHA256/512HOTP8 位备注
Google Authenticator忽略忽略事实基准。始终以此为第一测试目标。
1Password完整 RFC 支持。
Authy新版本已移除 HOTP。
Bitwarden完整 RFC 支持。
Microsoft Authenticator完整 RFC 支持。
YubiKey AuthenticatorHOTP 是 YubiKey OATH 的标准模式。
Duo Mobile忽略忽略使用自己的推送流程,TOTP 仅作备用。

另请参见

规范参考核实 2026-04-18。RFC 6238 (2011),RFC 4226 (2005),Google Key URI Format。