TOTP 两步验证
基于时间的一次性密码(TOTP)生成器,兼容 Google Authenticator。
当前动态口令
------
30 秒后刷新
兼容 otpauth:// URI 的 secret 参数。Google/Microsoft Authenticator 默认 Base32 编码。
使用说明
· TOTP(基于时间的一次性密码)是大多数两步验证(2FA)应用的底层算法
· 将密钥填入上方,每 30 秒自动刷新 6 位口令,与 Google Authenticator 同步
· 密钥不会上传,所有计算在浏览器本地完成
· 将密钥填入上方,每 30 秒自动刷新 6 位口令,与 Google Authenticator 同步
· 密钥不会上传,所有计算在浏览器本地完成
TOTP 两步验证码生成器
TOTP(Time-based One-Time Password,RFC 6238)是基于时间的一次性密码算法,是大多数两步验证(2FA)应用的底层算法。 通过用户密钥 + 当前时间戳计算 6 位动态口令,每 30 秒刷新一次。Google Authenticator、Microsoft Authenticator、Authy 都使用 TOTP。 本工具兼容标准 TOTP 实现,密钥不会上传。
TOTP 工作原理
- 用户开启 2FA 时,服务端生成随机密钥(Base32 编码)。
- 密钥以二维码(otpauth:// URI)形式给用户扫描,存入手机 2FA 应用。
- 登录时,服务端和手机各自用密钥 + 当前时间戳(除以 30)计算 HMAC-SHA1。
- 从 HMAC 结果中取特定位置的 4 字节,转为 6 位数字。
- 双方时间窗口内有效(默认 30 秒,可能允许前后 1 个窗口防止时钟漂移)。
常见应用
- Google / Microsoft / Apple 账户登录
- GitHub / GitLab 仓库访问
- 银行、支付平台二次验证
- VPN、堡垒机登录
- 加密货币交易所提现
TOTP 安全注意事项
TOTP vs 短信验证码:TOTP 明显更安全。短信验证码存在 SIM 卡劫持(攻击者骗运营商补办你的 SIM 卡)、短信嗅探、运营商系统漏洞等风险,且 SMS 传输不加密。TOTP 密钥本地存储、计算离线完成、无网络传输,物理隔离于运营商系统。能选 TOTP 就不要选短信。
备份恢复码是启用 2FA 时必须保存的:每个服务都会给你一组一次性恢复码,当你丢失手机或 2FA 应用无法使用时,用恢复码登录。务必将这些恢复码保存在安全的地方(如本地加密笔记 DeepSeal),否则一旦丢失 2FA 设备,可能需要漫长的人工申诉才能找回账户。更换手机前必须先在旧手机导出 2FA 密钥或在服务端重新绑定,否则旧手机上的 2FA 密钥不会自动迁移到新手机。
密钥安全:TOTP 密钥等价于第二把密码,泄露后攻击者可在自己的设备上生成相同验证码。扫描二维码时注意周围环境,不要在公共场合展示。密钥应仅存在你控制的设备上,不要截图同步到云相册。本工具的密钥仅存在浏览器内存中,关闭页面即清除,不存储不传输。
TOTP 常见问答
TOTP 是什么?
TOTP(Time-based One-Time Password)是基于时间的一次性密码,RFC 6238 标准。基于共享密钥和当前时间生成 6 位数字验证码,每 30 秒变化一次。Google Authenticator、Microsoft Authenticator 等都使用此算法。
TOTP 和 HOTP 的区别?
TOTP 基于时间计数,每 30 秒生成新码。HOTP(RFC 4226)基于事件计数,每次使用后计数器加 1 生成新码。TOTP 无需同步计数器,更方便,是目前主流的 2FA 方案。
为什么我的 TOTP 码和手机上不一样?
TOTP 依赖时间同步,如果设备时间偏差超过 30 秒,生成的验证码会不一致。请确保设备时间已通过 NTP 自动校准。另外检查 Base32 密钥是否正确输入。
TOTP 安全吗?
TOTP 提供强第二因素认证。即使密码泄露,攻击者没有动态码也无法登录。但 TOTP 密钥需妥善保管,建议在启用 2FA 时保存恢复码,以防丢失设备。本工具密钥仅本地存储,不传输。