如何用 Base32 Secret 生成 TOTP 验证码
网站开启两步验证时,如果给你一个“手动输入密钥”或 setup key,它通常就是 Base32 secret。只要密钥和设置正确,就可以用它生成 TOTP,也就是按时间变化的一次性验证码。
先给结论:用 Base32 secret 生成 TOTP 时,要把 setup key 准确粘贴到可信的本地 TOTP 生成器里,确认周期通常是 30 秒,位数通常是 6 位,并检查设备时间是否自动同步。
BaseToolbox 的 2FA 验证码生成器 支持 Base32 密钥、otpauth:// URL 和二维码图片。它适合在浏览器本地计算 TOTP,不需要为了生成验证码把密钥上传到服务器。
Base32 Secret 是什么?
Base32 secret 是网站和验证器 App 共同保存的共享密钥。它经常长得像一串大写字母和数字,例如:
JBSWY3DPEHPK3PXP
它不是 6 位验证码本身,而是可以持续生成未来验证码的长期密钥。任何拿到这个密钥的人,都可能算出对应账号的有效 TOTP 码,所以它要像密码一样保密。
TOTP 算法定义在 RFC 6238 中。常见验证器二维码会把同一个密钥放进 Google Authenticator 使用的 Key URI Format。
怎么用 Base32 Secret 生成 TOTP?
当你已经掌握 setup key 时,可以按这个流程做:
- 准确复制 Base32 setup key。
- 在可信设备上打开本地 TOTP 生成器。
- 粘贴密钥。
- 如果服务没有特别说明,周期保持 30 秒。
- 如果服务没有特别说明,验证码保持 6 位。
- 如果 setup URL 没写 SHA-256 或 SHA-512,通常使用 SHA-1。
- 确认设备时间自动同步。
- 在倒计时结束前输入当前验证码。
如果工具支持 otpauth:// URL,也可以直接粘贴完整 URL。它可以同时包含密钥、服务名、账号标签、周期、位数和算法,比只复制密钥更不容易漏设置。
为什么密钥正确,验证码还是不对?
TOTP 出错通常不是算法“随机”,而是密钥周围的设置不一致。
| 问题 | 检查什么 |
|---|---|
| 验证码立刻被拒绝 | 设备时间可能不准,或服务端时间窗口不同。 |
| 位数不对 | 账号可能要求 8 位,而不是 6 位。 |
| 密钥提示无效 | 复制时可能混入空格、短横线、标签或非法字符。 |
| 扫二维码可以,手输密钥不行 | 二维码里可能包含周期、位数或算法等额外设置。 |
| 一个 App 可以,另一个不行 | 算法、周期或位数可能不一致。 |
排错时不要马上重置 2FA。先看 setup URL、设备时间、验证码位数和复制的密钥是否一致。
把 Base32 Secret 粘到在线工具安全吗?
只有在你信任工具,并且确认它在浏览器本地处理密钥时,才适合粘贴真实 2FA secret。Base32 setup key 是敏感凭证,因为它可以生成未来的登录验证码。
个人账号最稳妥的长期存放位置仍然是密码管理器或验证器 App。浏览器 TOTP 生成器更适合测试、临时恢复,或调试内部 2FA 集成。
开发环境请使用测试密钥。不要把真实用户的 otpauth:// URL、setup key 或二维码放进 bug report、日志、聊天记录和截图里。
一句话总结
Base32 secret 可以生成 TOTP 验证码,但必须同时匹配时间窗口、验证码位数和算法。大多数验证器默认是 6 位、30 秒、SHA-1,但完整的 otpauth:// URL 可能覆盖这些默认值。
什么时候适合用浏览器生成?
适合的场景通常有三类:你在调试自己的 2FA 集成;你保存了 setup key,需要在可信电脑上临时生成一次验证码;或者你想检查二维码里读出的密钥、issuer、账号标签是否正确。
不适合的场景也要分清:如果你只是丢了手机,但没有密钥和备用码,生成器帮不了你;如果密钥来自别人,或者来源不清楚,也不应该拿来尝试登录。TOTP 的安全前提是只有账号本人和服务端知道这个共享密钥。
恢复成功后也不要把 setup key 长期散落在桌面、聊天记录或截图里。更好的做法是重新绑定验证器,保存新的备用码,并把恢复材料放进密码管理器或离线安全位置,避免下次再次依赖临时找回。真实账号密钥越少复制,风险越低。
常见问题
Base32 Secret 和备用码是一回事吗?
不是。Base32 secret 是长期 setup key,用来持续生成新的 TOTP 验证码;备用码通常是平台生成的一次性恢复码。
为什么 TOTP 验证码每 30 秒变一次?
TOTP 会把共享密钥和当前时间窗口一起计算。时间窗口变化后,算出的验证码也会变化。
能从 6 位验证码反推出 Base32 Secret 吗?
不能。当前 6 位验证码不能反推出长期密钥。如果密钥、已同步设备和备用码都丢了,只能走平台账号恢复流程。