TOTP 动态口令生成器

输入 Base32 共享密钥,按 RFC 4226 / RFC 6238 在浏览器本地生成两步验证动态口令。支持 SHA-1 / SHA-256 / SHA-512 三种算法、6 位或 8 位口令、15 / 30 / 60 秒周期,口令每秒自动刷新并显示剩余时间。密钥只在本地参与计算,不会上传服务器。

密钥与参数 等待输入
算法
位数
周期

密钥通常为 A–Z 与 2–7 组成的 Base32 字符串,可包含空格与 - 分隔符;请勿在公共设备上使用真实密钥。

动态口令
算法—
位数—
周期—
剩余秒数—
输入 Base32 密钥后点击「生成口令」,将显示当前动态口令与剩余秒数。

口令每秒自动刷新,密钥仅在本地使用,不会上传。

计算规则
  • Base32 按 RFC 4648 解码,忽略空格、- 与结尾的 = 填充。
  • HMAC 结构严格遵循 RFC 2104:H((K⊕opad) || H((K⊕ipad) || msg))。
  • 密钥长于分组大小(SHA-1/256 为 64 字节、SHA-512 为 128 字节)时先哈希,短则右侧补零。
  • 计数器为 8 字节大端整数:counter = floor(epochSeconds / period)。
  • 动态截断:取 HMAC 末字节低 4 位为偏移,取 4 字节并屏蔽最高位(RFC 4226)。
  • 结果对 10^digits 取模,并左侧补零到指定长度。
  • 标准向量:密钥 ASCII "12345678901234567890",hotp(key,0,6,'SHA1') = 755224、hotp(key,1,6,'SHA1') = 287082;totp(key,59,{period:30,digits:8,algo:'SHA1'}) = 94287082。