首页

TOTP 测试向量和演示 Token

本指南把公开的 RFC 6238 TOTP 测试向量和简单演示 secret 放在一起,方便你在使用真实账号设置密钥前,测试 Authenticator 应用、本地 2FA 生成器或 TOTP 代码库。它可以帮助排查 algorithm、digits、period、设备时间和 otpauth 参数不一致的问题。

标准 RFC 6238 测试向量

本页表格列出 RFC 6238 Appendix B 公开的固定 Unix 时间戳 8 位 TOTP 期望输出。你可以不用真实 2FA 账号,就检查 SHA-1、SHA-256 和 SHA-512 实现是否正确。

如何使用测试向量表

把你的 TOTP 实现设置为对应 hash 算法的 RFC 测试 secret、8 位验证码和 30 秒周期,然后在每个列出的 Unix 时间戳比较生成值和期望输出。

公开演示设置密钥

用于非敏感测试时,可以使用公开 Base32 设置密钥 JBSWY3DPEHPK3PXP,并设置 SHA-1、6 位验证码和 30 秒周期。这个密钥只用于测试行为,不能用于保护真实账号。

otpauth 测试 URI

对应的 otpauth URI 是 otpauth://totp/2FA%20Test:test-token?secret=JBSWY3DPEHPK3PXP&issuer=2FA%20Test&algorithm=SHA1&digits=6&period=30。设备时间一致时,兼容应用应生成相同的当前验证码。

如何对比生成的验证码

把演示密钥粘贴到本站本地生成器,再把同一个密钥作为手动设置密钥加入你的 Authenticator 应用。在同一个 30 秒窗口内对比当前 6 位验证码。

如果测试验证码不同

检查设备时间、时区、algorithm、digits、period,以及应用中保存的 Base32 secret 是否完全相同。多数不一致来自时间漂移,或复制时漏掉、改错了某个字符。

安全测试边界

不要公开或分享真实 2FA 设置密钥。测试真实账号时,优先使用 #secret= fragment 快捷方式,因为 fragment 留在浏览器中,不会随 HTTP 请求发送。

这个测试不能验证什么

本地 token 测试可以确认 TOTP 计算是否兼容,但不能证明某个账号一定接受该验证码,不能恢复丢失的 2FA,也不能批准推送登录、生成短信、邮箱、Passkey 或恢复码。

RFC 6238 TOTP 测试向量

这些公开的 RFC 6238 Appendix B 测试向量使用 8 位 TOTP 值,覆盖 SHA-1、SHA-256 和 SHA-512,可用于检查 TOTP 生成器、Authenticator 应用或代码库是否符合标准算法。

Unix 时间UTC 时间SHA-1 期望 TOTPSHA-256 期望 TOTPSHA-512 期望 TOTP
591970-01-01 00:00:59 UTC942870824611924690693936
11111111092005-03-18 01:58:29 UTC070818046808477425091201
11111111112005-03-18 01:58:31 UTC140504716706267499943326
12345678902009-02-13 23:31:30 UTC890059249181942493441116
20000000002033-05-18 03:33:20 UTC692790379069882538618901
200000000002603-10-11 11:33:20 UTC653531307773770647863826

RFC 6238 TOTP 测试向量 (JSON)

标准与参考资料

常见问题

什么是 TOTP 测试向量?

TOTP 测试向量是一组已知输入和期望输出,用于验证实现是否正确。RFC 6238 测试向量固定了时间戳、hash 算法、位数和 secret,方便其他实现精确对比。

可以把演示 TOTP secret 用在真实账号上吗?

不可以。演示 secret 是公开的,绝不能用于保护真实账号。它只适合检查两个 TOTP 生成器是否能算出相同验证码。

为什么两个测试 token 显示不同验证码?

最常见原因是设备时间偏差、period 不同、digits 不同、algorithm 不同,或复制后的 secret 与原始设置密钥不完全一致。

这个页面能扫描二维码吗?

不能。这个工具专注于粘贴 Base32 设置密钥和 otpauth://totp/ 链接。如果账号只显示二维码,请优先查找该服务是否提供手动设置密钥。

测试验证码是在本地生成的吗?

是。TOTP 验证码计算在浏览器本地运行。真实 secret 请避免放在 path 和 query URL 中,建议使用 #secret=YOUR_BASE32_SECRET 这种 fragment 快捷方式。