TOTP 验证码生成器
本地运行,数据不上传服务器
隐私提示:密钥、动态验证码和恢复码均在浏览器本地处理,不会上传。恢复码使用 crypto.getRandomValues 生成。
剩余 30 秒刷新
TOTP · 30 秒
使用说明
调试两步验证功能时,需要自己生成一组动态码验证算法实现是否正确;测试账号不想绑定真实身份验证器,用测试密钥生成临时代码更方便;接入接口时怀疑服务端时间或算法设置不一致,需要本地快速比对;给用户生成一组备用恢复码作为账号恢复方案。这些场景用一个能生成 TOTP 和恢复码的工具能省不少事。 这个工具输入 Base32 密钥,按当前时间生成 30 秒周期的动态验证码,位数可选 6 位或 8 位,界面会显示剩余有效秒数。密钥容忍空格和连字符,粘贴起来更友好。 另有一个恢复码生成入口,一次生成 10 个 16 位数字码,按 8-8 分组展示,方便复制或打印留档。适合后端、测试、安全工程师和需要调试两步验证的开发者。
核心功能
- ✓根据 Base32 密钥生成 30 秒周期的动态验证码
- ✓支持 6 位和 8 位两种验证码长度
- ✓显示剩余有效秒数,方便在有效期内使用
- ✓Base32 密钥容错,可含空格和连字符
- ✓演示模式,方便测试用
- ✓生成 10 个 16 位数字恢复码,8-8 分组展示
- ✓动态码和恢复码可逐条复制
使用教程
核对身份验证器的 TOTP:输入同一密钥,和身份验证器里显示的动态码对比,确认算法实现一致。 测试两步验证接入:用测试密钥生成动态码,发给后端接口做联调,不占用真实账号。 调试时间偏差问题:动态码不匹配时,先确认本机时间和服务器时间是否准确,TOTP 对时间敏感。 生成账号恢复码:用户忘记两步验证设备时,用恢复码登录,工具可一次生成 10 个备用。 核对 Base32 密钥格式:粘贴带空格或连字符的密钥,工具会自动容错处理。
常见问题
Q:OTP 和 TOTP 有什么区别?
A:OTP 是动态验证码的统称,TOTP 是基于时间的具体实现。当前工具只实现 TOTP。
Q:支持 60 秒周期或 SHA-256 算法吗?
A:不支持,当前只实现 30 秒周期、SHA-1 的标准 TOTP。
Q:可以扫描二维码导入密钥吗?
A:不支持,需要手动粘贴 Base32 密钥。
Q:生成的动态码和身份验证器对不上?
A:先检查本机时间是否准确,TOTP 依赖系统时间,秒级偏差都会导致结果不一致。
Q:可以解析 otpauth:// 链接吗?
A:不支持,工具只接受 Base32 密钥文本。
Q:恢复码是做什么用的?
A:两步验证设备丢失时,恢复码可以用来登录账号。工具一次生成 10 个,建议妥善保存。
Q:数据会上传服务器吗?
A:不会,生成过程在浏览器本地完成。Base32 密钥请勿使用真实生产密钥。