什么是 TOTP?
TOTP(基于时间的一次性密码)是一种广泛使用的算法,用于生成每 30 或 60 秒变化一次的临时认证代码。TOTP 在 RFC 6238 中定义,是 Google 身份验证器、Authy 和 Microsoft 身份验证器等流行身份验证器应用背后的标准。
常见用途
双因素认证 (2FA)
多因素认证 (MFA)
服务账户保护
开发与测试
TOTP 如何工作
该算法采用 Base32 编码的密钥 和当前 Unix 时间戳,将时间除以周期(例如 30 秒)以获得计数器值,然后使用选定的哈希算法(SHA-1、SHA-256 或 SHA-512)应用 HMAC。结果会动态截断以生成最终的数字代码。
TOTP = Truncate(HMAC-SHA(secret, floor(time / period)))
如何使用 TOTP 生成器
从密钥生成代码
输入密钥
在输入字段中输入您的 Base32 密钥(例如 JBSWY3DPEHPK3PXP)
自动生成代码
TOTP 代码将自动生成,并显示倒计时计时器
调整设置
根据需要配置 算法(SHA-1、SHA-256、SHA-512)、位数(6 位或 8 位)和 周期(30 秒或 60 秒)
复制代码
点击 复制按钮 将当前代码复制到剪贴板
从 otpauth:// URL 导入
粘贴 URL
将 otpauth://totp/... URL 直接粘贴到输入字段中
自动解析
该工具将自动解析发行者、账户名称、密钥和所有设置
设置更新
设置控件将更新以匹配 URL 参数
从二维码图像导入
上传二维码
点击标题中的 上传二维码 按钮(上传图标)
选择图像
选择包含 TOTP 二维码的图像文件
自动解码
二维码将被解码,otpauth:// URL 将自动解析
保存和管理账户
- 输入密钥后,点击 保存 按钮以存储账户
- 系统将提示您输入账户名称
- 点击任何已保存的账户以加载其密钥和设置
- 使用 笔形图标 或双击账户名称以重命名
- 使用 X 按钮 从已保存列表中删除账户
导出为二维码
加载密钥
输入或加载密钥
显示二维码
点击 显示二维码 按钮(二维码图标)
扫描并转移
使用任何身份验证器应用扫描
功能
多种哈希算法
使用三种 HMAC 算法生成 TOTP 代码:
- SHA-1 — 默认,兼容性最好
- SHA-256 — 增强安全性
- SHA-512 — 最高安全性
可配置的代码设置
自定义代码生成参数:
- 6 位或 8 位数字代码
- 30 秒或 60 秒周期
- 从 otpauth:// URL 自动调整
实时倒计时计时器
带有智能颜色指示器的可视进度条:
- 剩余 33% 时为 黄色
- 剩余 5 秒时为 红色
- 显示下一个代码预览
二维码支持
完整的二维码集成:
- 通过上传二维码图像导入
- 从密钥生成二维码
- 转移到移动身份验证器应用
多账户管理
保存和组织多个账户:
- 在本地存储无限账户
- 快速加载已保存的配置
- 轻松重命名和删除账户
otpauth:// URL 解析
自动提取 URL 参数:
- 解析密钥和发行者信息
- 提取算法和设置
- 标准身份验证器格式
常见问题
TOTP 和 HOTP 有什么区别?
TOTP(基于时间) 使用当前时间生成每 30 或 60 秒变化一次的代码。HOTP(基于 HMAC) 使用每次使用时递增的计数器。
TOTP 被更广泛采用,因为代码会自动过期,降低了重放攻击的风险。此工具仅支持 TOTP。
我应该使用哪种算法?
SHA-1 是默认且最广泛支持的算法 — 除非您设置的服务特别要求 SHA-256 或 SHA-512,否则请使用它。
大多数身份验证服务(Google、GitHub、AWS)使用 SHA-1,配合 6 位数字和 30 秒周期。
为什么我的代码与预期值不匹配?
TOTP 代码取决于准确的系统时间。如果您的设备时钟偏差超过几秒,生成的代码可能不匹配。
- 检查您的系统时间是否已同步
- 验证算法、位数和周期设置是否与服务匹配
- 确保密钥输入正确
在这里输入我的密钥安全吗?
是的。所有计算完全在您的浏览器中使用 Web Crypto API 进行。您的密钥永远不会传输到任何服务器。
已保存的账户仅存储在您浏览器的 localStorage 中,只能从此设备访问。
我可以用这个代替 Google 身份验证器吗?
此工具生成与 Google 身份验证器和其他身份验证器应用相同的 TOTP 代码。您可以将其用于开发、测试或作为备用代码生成器。
密钥应该是什么格式?
密钥应采用 Base32 编码(字母 A-Z 和数字 2-7)。
您也可以:
- 粘贴完整的
otpauth://totp/...URL - 上传二维码图像
Base32 密钥中的空格和填充字符 (=) 会自动删除。
我的已保存账户是否有备份?
已保存的账户存储在您浏览器的 localStorage 中。它们在会话之间持久存在,但不会备份到任何云服务。
还没有评论,快来发表第一条!