TOTP/HOTP 动态验证码
输入 Base32 密钥,实时生成 TOTP/HOTP 动态验证码,支持二维码生成和 Google Authenticator 扫描
配置参数
仅支持 A-Z 和 2-7,建议 16 或 32 字符
二维码信息(可选)
当前 TOTP 验证码
------
剩余有效时间
-- 秒
上一个(-30s)
------
下一个(+30s)
------
验证验证码
扫描添加到 Authenticator
关于 TOTP/HOTP 动态验证码
- TOTP(基于时间的一次性密码,RFC 6238):每 30 秒自动刷新,是 Google Authenticator、Authy 等应用的标准算法
- HOTP(基于计数器的一次性密码,RFC 4226):每次使用后计数器递增,适用于硬件令牌等场景
- 适用场景:调试两步验证集成、测试 OTP 服务端逻辑、生成临时访问令牌
操作说明
- 输入 Base32 格式密钥(如
JBSWY3DPEHPK3PXP),点击「生成验证码」或点击「TOTP 示例」快速体验 - TOTP 模式:验证码每 30 秒自动刷新,进度条显示剩余有效时间;同时展示上一个和下一个验证码(±1 容错窗口)
- HOTP 模式:每次点击「生成验证码」后计数器自动 +1,也可手动调整计数器值
- 填写账户名和发行方后点击「生成二维码」,可用 Google Authenticator / Authy 扫描添加
- 在验证框输入验证码后点击「验证」,可校验当前时间窗口(±1 步长)内的有效性
- 点击「随机生成密钥」按钮可生成一个随机 Base32 密钥
注意事项
- TOTP 依赖系统时间,若本机时间与服务器时间偏差超过 30 秒,验证码将无法通过验证
- 此工具仅用于开发调试,请勿将真实账户的 OTP 密钥输入任何在线工具
- 所有计算均在浏览器本地完成,密钥不会上传至任何服务器
TOTP/HOTP 知识详解
TOTP 工作原理
TOTP 基于 HMAC-SHA1 算法,计算流程如下:
T = floor(当前Unix时间戳 / 时间步长) // 默认步长30秒
HMAC = HMAC-SHA1(Base32解码(密钥), T的8字节大端表示)
偏移 = HMAC最后一字节的低4位
截取 = HMAC[偏移..偏移+4] 的低31位
OTP = 截取 mod 10^位数 // 默认6位
客户端和服务端使用相同的密钥和时间,独立计算出相同的验证码,无需网络传输验证码本身。
TOTP vs HOTP 对比
| 维度 | TOTP(RFC 6238) | HOTP(RFC 4226) |
|---|---|---|
| 计数因子 | 当前时间戳 / 步长 | 递增计数器 |
| 有效期 | 30 秒(可配置) | 直到使用为止 |
| 同步要求 | 客户端与服务端时间同步 | 计数器同步 |
| 典型应用 | Google Authenticator、Authy、Microsoft Authenticator | 硬件令牌(如 YubiKey) |
| 安全性 | 较高(短时效) | 中等(需防重放) |
otpauth:// URI 格式说明
二维码中编码的是标准 otpauth:// URI,格式如下:
otpauth://totp/发行方:账户名?secret=BASE32密钥&issuer=发行方&algorithm=SHA1&digits=6&period=30
totp/hotp:OTP 类型secret:Base32 编码的共享密钥(必填)issuer:发行方名称,显示在 Authenticator 应用中digits:验证码位数(6 或 8)period:TOTP 时间步长(秒),HOTP 使用counter
两步验证集成最佳实践
- 服务端存储 Base32 密钥时应加密,不得明文存储
- 验证时允许 ±1 步长的容错(即接受前一个和后一个验证码),以应对客户端时间轻微偏差
- 每个验证码只能使用一次,服务端需记录已使用的验证码防止重放攻击
- 提供备用恢复码(Recovery Codes),防止用户丢失设备后无法登录
- 密钥长度建议 160 位(20 字节,Base32 编码后 32 字符)
常见 Authenticator 应用对比
| 应用 | 平台 | 云备份 | 特点 |
|---|---|---|---|
| Google Authenticator | iOS / Android | ✅ Google 账户 | 最广泛使用,界面简洁 |
| Authy | iOS / Android / 桌面 | ✅ Authy 云 | 多设备同步,支持桌面端 |
| Microsoft Authenticator | iOS / Android | ✅ Microsoft 账户 | 与 Microsoft 生态深度集成 |
| 1Password | 全平台 | ✅ 1Password 云 | 密码管理器内置 OTP |
| Bitwarden | 全平台 | ✅ 自托管/云 | 开源,支持自托管 |