动态口令生成

粘贴 Base32 密钥或 otpauth 链接即可实时算出动态口令,算法、位数与周期可调,全程本地计算。

密钥只在本页内存中计算,不会上传,也不会写入本地存储。

使用说明

  1. 把网站安全设置给出的 Base32 密钥粘贴进输入框,空格、连字符与大小写差异会自动处理。也可以直接粘贴 otpauth:// 开头的链接。
  2. 粘贴链接时,工具会解析出密钥、签发方与账户,并把算法、位数、周期自动同步到下方选项。
  3. 页面实时显示当前口令,大号数字按组分隔,旁边的进度条与倒计时表示本轮剩余时间,归零后自动换新。
  4. 点「复制口令」得到不含空格的口令,直接粘贴到验证页提交;「下一个口令」可提前查看下一轮的值。
  5. 口令按本机时间计算,若与服务端对不上,先校准系统时间,再核对算法、位数与周期选项。

常见问题

生成的口令与验证器 App 的结果一致吗?
一致。本工具按 RFC 6238 标准实现:先做 Base32 解码,再计算 HMAC,最后动态截断并取模。实现过程用官方测试向量逐条校验过,输出与主流验证器 App 相同。
我的密钥会被上传或保存吗?
不会。计算全程在浏览器内完成,签名用的是浏览器内置的 Web Crypto 接口。密钥与口令不会发送到任何服务器,也不会写入本地存储,关闭页面后即消失。
口令总是对不上怎么办?
常见原因有三个:本机时间不准;位数、算法或周期与服务端不一致;密钥复制不完整。先同步系统时间,再逐项核对参数,最后检查密钥首尾有没有被截断。
什么时候需要改用 8 位或 60 秒?
绝大多数网站使用 6 位加 30 秒。少数企业系统与银行服务会要求 8 位口令或 60 秒周期,具体以服务端设置页或管理员说明为准,选错会导致验证失败。

使用步骤

  1. 粘贴密钥或链接

    把网站安全设置给出的 Base32 密钥粘进输入框,空格与连字符会被自动忽略。粘贴 otpauth:// 开头的完整链接时,密钥、签发方、账户与各项参数会一并解析出来。

  2. 核对算法与格式

    绝大多数网站使用 SHA-1、6 位、30 秒,这也是页面的默认值。个别服务会要求 SHA-256、8 位或 60 秒,以设置页说明为准,从链接解析时会自动填好。

  3. 读取当前口令

    大号数字就是当前有效的口令,按组分隔便于朗读与抄写。进度条和倒计时显示本轮剩余时间,归零后口令会自动换成下一轮的值,无需手动刷新。

  4. 复制并提交

    点「复制口令」把不含空格的口令放入剪贴板,粘贴到验证页提交即可。若倒计时只剩两三秒,建议等下一轮再复制,避免提交时口令刚好失效。

工具详细介绍

动态口令也叫 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 只改变摘要长度,计算流程完全相同,兼容性以服务端支持为准。

典型使用场景

  1. 开通两步验证

    网站安全设置里点「无法扫码」时,页面会显示一段 Base32 密钥。把它粘进本页,把算出的 6 位口令填回网站完成绑定。之后再登录一次,确认两端结果一致,整个绑定流程才算完成。

  2. 迁移与备份

    更换手机或重装验证器之前,先把各账号的密钥导出保存。逐条粘进本页验证一遍,口令能与服务端对上就说明备份完好,避免真正需要登录时才发现密钥早已抄错。

  3. 服务器与内网

    公司 VPN、跳板机与管理后台常要求输入动态口令。开通或重置两步验证时,先用本页核对算法与周期参数,再在页面上测一次口令,避免被锁在外面才开始排查配置问题。

使用技巧

  • 倒计时低于 5 秒时先别复制,等进度条重新走满再取新口令,提交时更从容。
  • 密钥粘贴后没有反应,多半混入了全角字符或复制不完整,检查首尾再试一次。
  • 绝大多数服务是 SHA-1、6 位、30 秒,改动默认选项前先确认服务端的要求。

注意事项

  • 密钥才是凭证

    页面上显示的口令只是临时的衍生物,Base32 密钥才是真正的长期凭证。不要把密钥填进口令输入框,也不要截图外发,拿到密钥的人随时可以生成你的口令,等于拿到了登录能力。

  • 时间不准对不上

    口令计算用的是本机时间。设备时钟快了或慢了,算出的口令就会与服务端不一致。验证失败先同步系统时间,再检查位数、算法与周期有没有改错,最后确认密钥完整。

  • 手抄密钥易出错

    Base32 字母表不含 0、1、8、9 这几个数字。抄写的密钥里若出现它们,多半是把 O、I、B 等字母看错了。应回到设置页重新复制密钥,凭猜测修补几乎必然算错,还会浪费验证次数。

相关工具