OTP 验证码生成/校验
生成和校验 TOTP/HOTP 一次性验证码,用于双因素认证。支持 SHA-1/256/512、Base32/Hex 密钥、二维码导出,100%浏览器端运行,无需注册。
什么是一次性验证码(OTP)?
OTP 是仅在一次登录会话或交易中有效的密码。由于它会频繁变化,即使被窃取也会很快失效,因此比静态密码更安全。
TOTP 和 HOTP 有什么区别?
TOTP(基于时间的一次性密码,RFC 6238)根据当前时间生成验证码,默认每 30 秒变化一次。HOTP(基于 HMAC 的一次性密码,RFC 4226)使用递增计数器,每次生成时计数器加一。TOTP 在现代双因素认证中更常见。
这个 OTP 生成器安全吗?
安全。所有生成和校验都在浏览器本地通过 Web Crypto API 完成,您的密钥不会离开设备,也不会发送到任何服务器。
什么是 Base32 密钥?
Base32 是一种用 32 个字符(A-Z 和 2-7)表示二进制数据的编码方案,是 Google Authenticator 等验证器使用的 OTP 密钥标准格式,例如 "JBSWY3DPEHPK3PXP"。
应该选择哪种哈希算法?
SHA-1 是默认算法,与包括 Google Authenticator 在内的大多数验证器兼容。SHA-256 和 SHA-512 更安全,但并非所有应用都支持。为获得最佳兼容性请使用 SHA-1。
如何将生成的验证码添加到 Google Authenticator?
输入密钥后,用 Google Authenticator(或其他兼容 2FA 应用)扫描显示的 otpauth 二维码。也可以手动输入 otpauth URI 或密钥。
otpauth:// URI 格式是什么?
otpauth://totp/<标签>?secret=<密钥>&issuer=<发行方>&algorithm=<算法>&digits=<位数>&period=<周期>。该 URI 编码了所有 OTP 参数,可渲染为二维码方便导入验证器。
为什么验证码每 30 秒变化一次?
RFC 6238 规定 TOTP 默认时间步长(周期)为 30 秒,在安全性(有效期短)和可用性(有足够时间输入)之间取得平衡。如有需要可自定义周期。
可以校验收到的验证码吗?
可以,切换到校验模式,输入密钥和收到的验证码。工具会比对当前及前后时间窗口的值,以容忍微小时钟偏差。
6 位和 8 位验证码有什么区别?
指生成的 OTP 验证码长度。6 位是大多数 2FA 系统的标准长度。8 位提供更多组合可能,但支持的应用较少。
为什么我的验证码和 Google Authenticator 不一致?
请检查密钥、算法(通常 SHA-1)、位数(通常 6 位)和周期(通常 30 秒)是否一致。同时确保设备时间准确,因为 TOTP 依赖时间同步。
2FA 和 OTP 是一回事吗?
OTP 是生成一次性验证码的机制。2FA(双因素认证)是一种安全流程,常以 OTP 作为第二因素,将"你所知道的"(密码)与"你所拥有的"(OTP 设备)相结合。