TOTP 验证码生成器

输入 Base32 密钥即可实时算出 2FA 动态口令并显示剩余秒数,支持生成验证器可扫的二维码、 反解 otpauth 链接,以及按 ±N 个时间窗校验验证码。全部计算在浏览器本地完成,密钥不上传。

验证码总对不上时,拖动这里模拟服务器时钟偏差。若偏移到某个值就能对上,说明问题出在时间同步而不是密钥。

25

326449

计数器 59637182

密钥不会离开这台设备

全部计算在浏览器本地完成,密钥不上传服务器、不写入本地存储、也不会出现在分享链接里,刷新页面即清空。 但 TOTP 密钥等价于一份长期凭据,仍建议这里只用测试密钥,日常 2FA 请使用手机验证器 App。

遵循 RFC 6238(TOTP)与 RFC 4226(HOTP),已通过官方测试向量校验。

这个工具能做什么

  • • 实时生成 6 位或 8 位 TOTP 动态口令,带环形倒计时
  • • 支持 SHA-1 / SHA-256 / SHA-512 与 30 秒 / 60 秒周期
  • • 生成 otpauth:// 二维码,验证器 App 可直接扫码添加
  • • 粘贴 otpauth 链接自动反解并回填全部参数
  • • 时间偏移调节,用于定位服务器时钟不同步
  • • 校验模式:判断用户提交的码落在第几个时间窗

如何使用

01

填入 Base32 密钥

粘贴服务方给的密钥,或点「随机生成」造一个 160 位的测试密钥。

02

核对算法与周期

绝大多数服务用 SHA-1、6 位、30 秒,这也是默认值。不一致时才需要改。

03

读取动态码

验证码每个周期自动刷新,环形倒计时显示当前窗口剩余秒数。

04

排查不匹配

用「时间偏移」判断是不是时钟问题,或到「校验」页确认验证码落在第几个时间窗。

适用场景

2FA 接入联调验证码对不上排查服务端 TOTP 实现验证时钟偏差定位验证器二维码生成安全教学演示

配套工具

常见问题

TOTP 和短信验证码有什么区别?

TOTP(RFC 6238)是把一个只有你和服务端知道的密钥,与当前时间一起做 HMAC 运算得出的动态码,全程离线、不经过任何网络。短信验证码则要经过运营商网络下发,会被 SIM 卡劫持、短信嗅探和运营商侧攻击威胁,也可能因信号问题收不到。所以在安全性上 TOTP 明显优于短信,主流平台都优先推荐验证器 App。

为什么我算出来的验证码和手机 App 不一样?

按这四项排查:一、密钥是否完全一致,注意 Base32 只允许 A-Z 和 2-7,不含数字 0、1、8,空格和连字符可以忽略;二、算法是否都是 SHA-1,虽然规范支持 SHA-256/512,但绝大多数服务和 App 实际只用 SHA-1;三、位数与周期是否为 6 位和 30 秒;四、设备时间是否准确,TOTP 完全依赖时间,手机或服务器时钟偏差超过一个周期就会对不上。本工具提供了时间偏移调节,可用来定位是不是时钟问题。

这个工具能替代 Google Authenticator 吗?

不建议。它适合开发联调、排查验证码不匹配、验证服务端实现是否正确,以及临时查看一次动态码。但它不保存你的密钥,刷新页面就没了;更重要的是,把长期有效的 2FA 密钥粘贴到任何网页工具里都不是好习惯。日常使用请用手机上的验证器 App 或密码管理器内置的 TOTP 功能。

Base32 密钥和二维码是什么关系?

二维码里存的是一条 otpauth://totp/ 开头的链接,Base32 密钥只是其中的 secret 参数,此外还带有 issuer(服务名)、account(账号)、algorithm、digits、period 等参数。验证器 App 扫码就是在读这条链接。所以有密钥就能生成二维码,有二维码也能反解出密钥——本工具两个方向都支持。

服务端校验时应该允许多大的时间窗?

通常允许前后各一个时间窗,即 ±30 秒,总计接受 3 个窗口的验证码。这样既能容忍用户设备的正常时钟漂移和输入耗时,又不至于让旧码有效太久。放宽到 ±2 个窗口以上会显著扩大攻击窗口。另外服务端必须记录已使用过的验证码,在有效期内拒绝重复提交,否则攻击者截获后可以在同一时间窗内重放。

密钥应该多长?怎么生成?

RFC 4226 要求至少 128 位(16 字节),推荐 160 位(20 字节,对应 32 个 Base32 字符),这也是 Google Authenticator 的常见长度。必须使用密码学安全随机数生成,本工具用的是浏览器的 crypto.getRandomValues。绝不能用时间戳、用户 ID 或任何可预测的值派生密钥,那等于让 2FA 形同虚设。

在这个页面输入密钥安全吗?

所有计算都在你的浏览器本地完成,密钥不会发送到任何服务器。我们还特意做了两项限制:分享链接绝不携带密钥,页面也不会把密钥写入 localStorage,刷新即清空。即便如此,TOTP 密钥等价于一份长期凭据,仍然强烈建议只在这里使用测试密钥,不要粘贴你正在使用的真实 2FA 密钥。

其他工具

哈希值生成工具

专业的哈希值生成工具,支持多种哈希算法,快速生成文件和文本的哈希值。

国密SM加解密工具

专业的国密SM加解密工具,支持SM2、SM3、SM4算法,保障数据安全。

AES 加解密工具

专业的在线AES加解密工具,支持AES-128/192/256位加密,多种加密模式(CBC, ECB, CFB, OFB, CTR)和填充方式。所有加密在本地浏览器完成,安全可靠。

API 签名生成工具

专业的HMAC和MD5签名生成工具,支持HMAC-SHA256/SHA512/MD5等多种哈希算法。适用于API接口签名、数据完整性验证、Webhook回调验证等场景。

RSA 加密解密工具

专业的RSA工具,支持密钥对生成(1024/2048/4096位)、公钥加密、私钥解密、数字签名与验证。支持RSA-OAEP和PKCS#1填充方案,PEM格式密钥兼容所有主流系统。

JWT 工具

免费在线 JWT 工具,提供 JWT 解析、验证、生成等功能,支持 HS256、RS256 等多种算法,简单易用。

MD5 加密

MD5 是一种广泛使用的密码散列函数,可以产生出一个 128 位(16 字节)的散列值(hash value),用于确保信息传输完整一致。

专业 Base64 编解码

Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。常用于在 HTTP 环境下传递较长的标识信息。

图片转 Base64

将图片转换为 Base64 编码字符串,用于嵌入 HTML、CSS 或其他基于文本的格式中。

UUID 生成器

为您的应用程序生成唯一标识符(UUID)。快速、安全、可靠。

摩斯密码工具

在线摩斯密码编解码工具,支持文本与摩斯密码的相互转换,并提供音频播放功能

邮箱解码工具

在线邮箱解码与编码工具,自动识别 29 种编码方式并逐层还原被混淆的邮箱地址,支持语法校验、风险检测与防采集代码生成。

URL 编码/解码

在线 URL 编码和解码工具,支持对 URL 进行编码和解码。

Unicode 转换工具

在 Unicode 编码、中文字符和英文字符之间进行转换,支持多种转换模式。

    问题反馈