动态口令生成
粘贴 Base32 密钥或 otpauth 链接即可实时算出动态口令,算法、位数与周期可调,全程本地计算。
使用说明
- 把网站安全设置给出的 Base32 密钥粘贴进输入框,空格、连字符与大小写差异会自动处理。也可以直接粘贴 otpauth:// 开头的链接。
- 粘贴链接时,工具会解析出密钥、签发方与账户,并把算法、位数、周期自动同步到下方选项。
- 页面实时显示当前口令,大号数字按组分隔,旁边的进度条与倒计时表示本轮剩余时间,归零后自动换新。
- 点「复制口令」得到不含空格的口令,直接粘贴到验证页提交;「下一个口令」可提前查看下一轮的值。
- 口令按本机时间计算,若与服务端对不上,先校准系统时间,再核对算法、位数与周期选项。
常见问题
生成的口令与验证器 App 的结果一致吗?
我的密钥会被上传或保存吗?
口令总是对不上怎么办?
什么时候需要改用 8 位或 60 秒?
使用步骤
- 粘贴密钥或链接
把网站安全设置给出的 Base32 密钥粘进输入框,空格与连字符会被自动忽略。粘贴 otpauth:// 开头的完整链接时,密钥、签发方、账户与各项参数会一并解析出来。
- 核对算法与格式
绝大多数网站使用 SHA-1、6 位、30 秒,这也是页面的默认值。个别服务会要求 SHA-256、8 位或 60 秒,以设置页说明为准,从链接解析时会自动填好。
- 读取当前口令
大号数字就是当前有效的口令,按组分隔便于朗读与抄写。进度条和倒计时显示本轮剩余时间,归零后口令会自动换成下一轮的值,无需手动刷新。
- 复制并提交
点「复制口令」把不含空格的口令放入剪贴板,粘贴到验证页提交即可。若倒计时只剩两三秒,建议等下一轮再复制,避免提交时口令刚好失效。
工具详细介绍
动态口令也叫 TOTP,是目前最常见的两步验证方式之一。开通两步验证时,网站会给你一段 Base32 密钥,验证器和网站各存一份。验证时,双方用同一个公式计算口令。以当前时间除以周期得到计数器,把计数器与密钥一起做 HMAC 运算,再从结果里截取出 6 位或 8 位数字。时间每过一个周期,计数器加一,口令随之更换。双方不需要联网同步每个口令,只要密钥一致、时钟大致准确,同一时刻算出的口令就相同。
本页面把整个计算过程放在浏览器里完成。密钥先经过 Base32 解码还原成字节,再用浏览器内置的 Web Crypto 接口做 HMAC 签名。动态截断与取模在页面脚本里完成,任何数据都不会离开本页。除了当前口令,页面还会给出下一个口令,方便提前准备。解析 otpauth 链接时,算法、位数与周期会自动同步到选项。计算使用的是本机时间,如果设备时钟偏差较大,算出的口令会与服务端不一致,校准时间即可解决。
原理与背景
TOTP 由 HOTP 扩展而来,两者都写在 RFC 标准里。HOTP 用一个双方同步递增的计数器,TOTP 把计数器换成时间:以 Unix 时间秒数除以周期,通常 30 秒,再向下取整。计算时先把计数器写成 8 字节大端序,与密钥一起送入 HMAC-SHA-1,得到 20 字节摘要。随后做动态截断:取摘要最后一个字节的低 4 位作为偏移,从偏移处读 4 个字节。屏蔽最高位得到一个 31 位整数,再对 10 的位数次方取模,不足位在前面补零。RFC 为 SHA-1、SHA-256 与 SHA-512 三种算法各给出一组测试向量,本页的实现逐条通过校验。
密钥用 Base32 编码,是因为这套字母表只有 A 到 Z 与 2 到 7 共 32 个字符。它不含容易混淆的 0、1、8、9,也不区分大小写。人工抄写与口头传达都不容易出错,很多网站还会每 4 个字符插入一个空格方便阅读。安全方面,口令本身只有 6 到 8 位,真正的凭证是那串密钥,所以密钥不能外泄。服务端通常会容忍前后各一个周期,本机时间偏差在 30 秒以内一般仍能通过验证。换成 SHA-256 或 SHA-512 只改变摘要长度,计算流程完全相同,兼容性以服务端支持为准。
典型使用场景
- 开通两步验证
网站安全设置里点「无法扫码」时,页面会显示一段 Base32 密钥。把它粘进本页,把算出的 6 位口令填回网站完成绑定。之后再登录一次,确认两端结果一致,整个绑定流程才算完成。
- 迁移与备份
更换手机或重装验证器之前,先把各账号的密钥导出保存。逐条粘进本页验证一遍,口令能与服务端对上就说明备份完好,避免真正需要登录时才发现密钥早已抄错。
- 服务器与内网
公司 VPN、跳板机与管理后台常要求输入动态口令。开通或重置两步验证时,先用本页核对算法与周期参数,再在页面上测一次口令,避免被锁在外面才开始排查配置问题。
使用技巧
- 倒计时低于 5 秒时先别复制,等进度条重新走满再取新口令,提交时更从容。
- 密钥粘贴后没有反应,多半混入了全角字符或复制不完整,检查首尾再试一次。
- 绝大多数服务是 SHA-1、6 位、30 秒,改动默认选项前先确认服务端的要求。
注意事项
- 密钥才是凭证
页面上显示的口令只是临时的衍生物,Base32 密钥才是真正的长期凭证。不要把密钥填进口令输入框,也不要截图外发,拿到密钥的人随时可以生成你的口令,等于拿到了登录能力。
- 时间不准对不上
口令计算用的是本机时间。设备时钟快了或慢了,算出的口令就会与服务端不一致。验证失败先同步系统时间,再检查位数、算法与周期有没有改错,最后确认密钥完整。
- 手抄密钥易出错
Base32 字母表不含 0、1、8、9 这几个数字。抄写的密钥里若出现它们,多半是把 O、I、B 等字母看错了。应回到设置页重新复制密钥,凭猜测修补几乎必然算错,还会浪费验证次数。