如何生成一次性密码(TOTP/HOTP)和随机验证码
了解如何基于 Base32 密钥在线生成 TOTP 与 HOTP 一次性动态口令,掌握 6 位与 8 位验证码的计算步骤、参数设置与常见错误排查。
输入 Base32 密钥后选择 TOTP 或 HOTP 模式,并配置验证码位数与周期或计数器,即可基于 HMAC-SHA1 算法计算出 6 位或 8 位一次性动态口令。
TOTP 与 HOTP 生成机制
一次性密码(OTP)常用于双重认证。TOTP 基于当前 Unix 时间戳和设定的时间周期进行计算,口令随时间窗口动态刷新;HOTP 则基于递增的事件计数器计算,完全独立于系统时钟。两者均支持生成 6 位或 8 位数字验证码。若需将密钥转为移动端扫码格式,可配合二维码生成器使用。
在线生成动态口令的步骤
使用 OTP 动态口令生成器 可以快速完成口令计算:
- 输入 Base32 编码的共享密钥,工具会自动忽略首尾空格并规范大小写。
- 选择运行模式:基于时间的 TOTP 或基于计数器的 HOTP。
- 选择验证码位数(6 位或 8 位)。
- 若为 TOTP 模式,设置时间周期(默认为 30 秒);若为 HOTP 模式,输入整数计数器。
- 点击运行获取验证码。TOTP 模式会额外显示当前周期的剩余有效秒数。
实际操作示例
已有密钥 JBSWY3DPEHPK3PXP,需获取当前 6 位 TOTP 口令: 在工具中填入该 Base32 密钥,模式保持 TOTP,位数选择 6 位,周期设为 30 秒。运行后即可获得当前时间窗口对应的 6 位数字验证码及剩余秒数,结果面板不会回显原始密钥。
使用限制
- 仅支持 Base32 格式密钥与 HMAC-SHA1 算法标准计算。
- TOTP 依赖系统当前时间,客户端与服务端时钟偏差可能导致验证失败。
- HOTP 模式完全由计数器决定,时间周期参数不参与计算。
常见错误排查
- 密钥格式错误:输入了非 Base32 字符导致解码失败。
- 参数非整数:时间周期或 HOTP 计数器输入了小数、负数或非法字符。
- 计数器未同步:使用 HOTP 时未递增计数器,导致生成的验证码不匹配。
常见问题解答
支持哪些密钥格式?
工具支持标准 Base32 字符串,支持省略末尾等号填充字符,并会自动过滤首尾空格及转换大小写。
如何生成 8 位验证码?
在验证码位数选项中选择 8 位,算法即会截取并输出 8 位纯数字口令。
HOTP 模式需要设置时间周期吗?
不需要。HOTP 仅依赖输入的计数器数值进行运算,与时间无关。