------关于 OTP / TOTP 生成器
OTP 是两步验证里那串每隔几十秒就刷新的动态码,最常见的是基于时间的 TOTP(RFC 6238)。它的原理是把一个共享密钥和当前时间窗口一起做 HMAC,再截取出 6 位数字,因此服务端和你的验证器 App 无需联网也能算出相同的码。本工具在浏览器本地,根据你提供的 Base32 密钥实时生成 TOTP 验证码,并显示剩余有效秒数,支持自定义位数和周期。密钥只在本地参与运算、不上传,适合调试 2FA 接入、核对服务端实现或在没有手机时临时取码。 建议在日常开发中收藏本工具,需要生成密钥或哈希值时即可快速打开使用。所有计算均在浏览器本地完成,敏感数据不会上传,可放心操作。
使用场景
- 调试 2FA 接入 — 用服务端下发的密钥本地算 TOTP,核对你的验证逻辑是否与标准一致。
- 核对验证器 — 比较本工具与 Google/Microsoft Authenticator 生成的码是否相同,定位时间漂移问题。
- 应急取码 — 临时没有手机时,用已知密钥在浏览器里生成当前验证码登录。
- 自动化测试 — 在开发环境为带 2FA 的账号生成可预测的测试验证码。
- 排查时间偏差 — 观察剩余秒数和服务端拒绝情况,判断是否因时钟不同步导致校验失败。
常见问题
TOTP 和 HOTP 有什么区别?
HOTP(RFC 4226)基于递增计数器,每用一次步进一步;TOTP(RFC 6238)把计数器换成"当前时间除以周期",所以验证码随时间自动刷新,是手机验证器的主流做法。
为什么我的码和服务端对不上?
最常见原因是设备时钟不同步。TOTP 严重依赖准确时间,几十秒的偏差就会算出不同的码。请校准系统时间,多数服务端也会容忍前后一个时间窗。
密钥为什么要用 Base32?
2FA 密钥常以 Base32 表示,因为它只用大写字母和数字、无易混字符,便于以二维码或文本分享。运算前工具会先把 Base32 解码回原始字节再做 HMAC。
默认是几位、多少秒刷新?
行业默认是 6 位数字、30 秒周期、底层用 HMAC-SHA1,这也是绝大多数验证器和服务的标准配置。部分系统会用 8 位或 SHA256,本工具可自定义匹配。
在浏览器里生成验证码安全吗?
运算本身在本地完成、密钥不上传,但把 2FA 密钥放进浏览器会削弱"第二因素"的隔离性。建议仅用于调试,长期使用仍以独立的验证器 App 或硬件密钥为宜。
有浏览器兼容性要求吗?
本工具兼容所有现代浏览器(Chrome、Firefox、Edge、Safari),无需安装任何插件或扩展。
可以离线使用吗?
首次加载后,部分功能在离线状态下仍可使用。页面资源加载后,核心逻辑完全在浏览器本地运行,不依赖网络。