TOTP 动态验证码原理
TOTP = HMAC-SHA1(密钥, 时间计数器) 截取动态码,时间计数器 = floor(当前秒 / 30)
每 30 秒刷新一次,与验证方时钟对齐即一致
这个工具能做什么
- 用共享密钥生成当前 6 位动态码
- 兼容 Google Authenticator 等标准
- 本地计算,密钥不上传
怎么使用(输入说明)
- 输入密钥:填 Base32 编码的共享密钥。
- 生成:得到当前 30 秒窗口的 6 位码。
为什么提示密钥无效
密钥需为标准 Base32(字母 A–Z 与 2–7,无空格);含非法字符或长度不对会被拒。动态码依赖设备时间,时差过大也会不匹配。
计算实例
例:密钥 “JBSWY3DPEHPK3PXP” 在某一时刻生成 “123456”,30 秒后变为另一组。
常见问题 FAQ
Q:算出的验证码和 Google Authenticator 一样吗?
A:一样。本工具严格按 RFC 6238 实现:以 30 秒为周期取时间计数器,用 HMAC-SHA1 签名后做动态截断取 6 位数字。只要密钥相同、设备时间准确,结果就与各类身份验证器 App 完全一致。
Q:密钥会被上传或保存吗?
A:不会。密钥仅存在于当前页面的内存中,全部计算由浏览器原生 Web Crypto API 在本地完成,本工具不发送任何网络请求,刷新页面即清空。
Q:为什么提示密钥无效?
A:TOTP 密钥必须是 Base32 编码,只允许 A-Z 与 2-7 这 32 个字符(可含空格与等号填充,会自动忽略)。若你拿到的是二维码,请先扫码取出 secret 参数再粘贴进来。