TOTP / HOTP 离线动态密码生成器

从 base32 共享密钥生成 RFC 6238 TOTP(基于时间,6/8 位、30/60 秒步长)与 RFC 4226 HOTP(基于计数器)一次性密码,完全离线,支持 HMAC-SHA1/256/512,并导出 otpauth:// URI 以便导入 Google Authenticator / Authy

输入 base32 共享密钥(即 Google Authenticator / Authy 二维码旁显示的那串字符),工具会在本地计算一次性密码——不会向任何服务器发送数据。

支持:

  • TOTP(RFC 6238):基于当前 UNIX 时间与步长(30 秒/60 秒)生成。这是 Google Authenticator 中大多数 2FA 账户显示的码。
  • HOTP(RFC 4226):基于共享计数器生成。
  • HMAC 算法:SHA-1(RFC 默认,几乎所有验证器都使用)、SHA-256SHA-512
  • 6 位(默认)或 8 位输出。
  • “显示后续 N 个码”——预览接下来若干个 TOTP 时间窗或 HOTP 计数器,便于测试漂移。
  • 导出 otpauth:// URI(可带 issuer 与账户标签),以便重新导入任意验证器 App。

实现说明:

  • HOTP 使用标准动态截断算法:对 8 字节大端计数器做 HMAC,取最后一字节低 4 位作为偏移,读取 31 位整数,再对 10^digits 取模。
  • TOTP 即 counter = floor(unixTime / step) 的 HOTP。
  • 密钥解码为 RFC 4648 base32(无需填充),会自动忽略空格。

适用场景:验证 2FA 密钥与手机生成的码一致、在登录流程中接入 TOTP 校验、教学 HMAC-OTP,或通过 otpauth:// 把 2FA 账户迁移到新设备。

示例结果

1 个示例

为已知密钥生成当前 6 位 TOTP

使用经典 RFC 测试密钥 JBSWY3DPEHPK3PXP(SHA-1、6 位、30 秒)。

Shows the current TOTP code, countdown ring, next 5 windows, and an otpauth:// URI.
查看输入参数
{ "secret": "JBSWY3DPEHPK3PXP", "mode": "totp", "algorithm": "sha1", "digits": 6, "period": 30, "counter": 0, "preview": 5, "issuer": "Acme", "account": "[email protected]" }

关键信息

分类
安全与校验
输入类型
text, select, number
输出类型
html
样本覆盖
4
支持 API
Yes

概览

本工具是一个完全离线的 TOTP 和 HOTP 动态密码生成器。只需输入 Base32 格式的共享密钥,即可在本地安全地计算出符合 RFC 6238(基于时间)和 RFC 4226(基于计数器)标准的一次性密码(2FA 验证码),支持自定义 HMAC 算法、位数及步长,并能生成用于导入身份验证器 App 的 otpauth:// 链接。

适用场景

  • 需要验证手机身份验证器(如 Google Authenticator 或 Authy)生成的 2FA 验证码是否与密钥源头一致时。
  • 在开发或测试双因素认证(2FA)登录流程时,需要快速获取当前或后续时间步长的动态验证码。
  • 想要将备份的 Base32 密钥重新转换为 otpauth:// 格式的 URI,以便快速扫码迁移到新的验证器设备。

工作原理

  • 用户输入 Base32 编码的共享密钥,工具在本地将其解码为原始字节流,自动忽略空格等干扰字符。
  • 根据选择的模式(TOTP 或 HOTP),工具获取当前的 UNIX 时间戳(计算时间步长)或指定的计数器值作为输入。
  • 使用选定的 HMAC 算法(SHA-1/SHA-256/SHA-512)对输入进行哈希计算,并通过标准动态截断算法提取出 6 位或 8 位的数字密码。
  • 实时渲染出当前验证码、倒计时进度条、后续多个时间窗的预测码,并拼接生成标准的 otpauth:// URI。

使用场景

离线备份与恢复:将手头保存的 Base32 文本密钥转换为 otpauth:// 格式,方便重新扫码导入新手机。
2FA 接口调试:开发人员在对接双因素认证登录接口时,无需频繁查看手机,直接在网页端获取当前及后续的测试验证码。
算法教学与验证:安全研究人员或学生通过调整算法、步长和计数器,直观观察 HMAC-OTP 的动态截断输出结果。

用户案例

1. 生成标准 6 位 TOTP 动态码

运维工程师
背景原因
运维工程师在配置服务器 SSH 双因素认证时,获得了一个 Base32 格式的备份密钥,需要验证该密钥是否能正确生成与手机一致的验证码。
解决问题
快速获取当前 30 秒时间步长下的 6 位 TOTP 验证码,并生成导入链接。
如何使用
在“共享密钥”输入框中粘贴密钥 `JBSWY3DPEHPK3PXP`,模式选择 `TOTP`,算法选择 `SHA-1`,位数选择 `6`,步长选择 `30`,并填写签发方为 `Acme`,账户为 `[email protected]`。
示例配置
secret: "JBSWY3DPEHPK3PXP", mode: "totp", algorithm: "sha1", digits: "6", period: "30", issuer: "Acme", account: "[email protected]"
效果
页面立即显示当前的 6 位动态验证码、倒计时圆环、后续 5 个时间段的预测码,并生成了用于导入的 otpauth:// 链接。

2. 基于计数器的 HOTP 验证码生成

安全测试员
背景原因
测试员正在评估一个使用 HOTP(基于计数器)协议的旧版企业登录网关,需要手动模拟计数器递增时的验证码变化。
解决问题
获取特定计数器值(如计数器为 12)下的 8 位 HOTP 验证码。
如何使用
输入共享密钥,将模式切换为 `HOTP`,位数选择 `8`,计数器输入 `12`,预览数量设为 `3`。
示例配置
secret: "JBSWY3DPEHPK3PXP", mode: "hotp", algorithm: "sha1", digits: "8", counter: 12, preview: 3
效果
工具输出计数器为 12 时的 8 位动态密码,并同时展示计数器为 13、14、15 的预测密码,方便进行步长漂移测试。

用 Samples 测试

hash

相关专题

常见问题

这个工具安全吗?我的密钥会被上传吗?

完全安全。本工具完全在您的浏览器本地运行,所有计算均在离线状态下完成,绝不会向任何服务器发送您的共享密钥。

为什么我生成的 TOTP 验证码和手机 App 上的不一致?

请检查您的系统时间是否准确同步,以及 HMAC 算法(默认 SHA-1)、位数(默认 6 位)和步长(默认 30 秒)是否与您的账户配置一致。

什么是 otpauth:// URI?

这是一种标准协议格式,用于将 2FA 账户信息(包括密钥、签发方和账户名)打包,方便通过二维码或链接直接导入到 Google Authenticator 等 App 中。

支持哪些 HMAC 算法?

支持 RFC 标准定义的 SHA-1、SHA-256 和 SHA-512 算法,能够兼容绝大多数主流的安全认证场景。

如何使用 HOTP 模式?

选择 HOTP 模式后,您需要手动指定一个计数器(Counter)数值,工具会基于该计数器生成一次性密码,每次验证成功后计数器需递增。

API 文档

请求端点

POST /zh/api/tools/totp-hotp-offline-generator

请求参数

参数名 类型 必填 描述
secret text -
mode select -
algorithm select -
digits select -
period select -
counter number -
preview number -
issuer text -
account text -

响应格式

{
  "result": "
Processed HTML content
", "error": "Error message (optional)", "message": "Notification message (optional)", "metadata": { "key": "value" } }
HTML: HTML

AI MCP 文档

将此工具添加到您的 MCP 服务器配置中:

{
  "mcpServers": {
    "elysiatools-totp-hotp-offline-generator": {
      "name": "totp-hotp-offline-generator",
      "description": "从 base32 共享密钥生成 RFC 6238 TOTP(基于时间,6/8 位、30/60 秒步长)与 RFC 4226 HOTP(基于计数器)一次性密码,完全离线,支持 HMAC-SHA1/256/512,并导出 otpauth:// URI 以便导入 Google Authenticator / Authy",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=totp-hotp-offline-generator",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

你可以串联多个工具,比如:`https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`,最多20个。

如果遇见问题,请联系我们:[email protected]