Base32为什么用于2FA密钥
TOTP需要双方保存同一份二进制密钥。二进制不适合人工抄写,Base32把它编码成较少混淆的字母和数字,因此常出现在二维码下方的手动设置密钥中。
Base32只负责表达数据,不会隐藏数据。把Base32密钥公开,效果等同于公开二维码中的TOTP凭证。
标准Base32允许哪些字符
RFC 4648定义的常见Base32字母表包含A到Z和数字2到7。服务可能使用小写显示,验证器通常会统一转换成大写。末尾的等号是填充符,有些2FA实现会省略。
数字0、1、8、9不属于这套标准字母表。看到这些字符时,应检查是否把字母O误认为0,或把字母I、L误认为1。
空格、连字符和大小写怎么处理
网页可能每四个字符插入空格,方便用户核对。多数验证器会忽略空格和连字符,但最稳妥的做法仍是使用服务提供的完整原文,不随意删除中间字符。
如果手动输入后验证码不同,先重新复制密钥,再确认算法、位数和周期,而不是反复修改字符猜测。
密钥长度是否固定
Base32文本长度取决于原始密钥长度,并不存在所有网站都相同的固定字符数。较长密钥不一定意味着网站会使用更长验证码,验证码位数是另一个独立参数。
不要为了让密钥看起来符合某个长度而补零或截断。任何一个字符变化都会产生完全不同的验证码序列。
如何安全核对密钥
- 只在目标网站官方设置页和可信验证器之间传递密钥。
- 使用显示功能核对时,确认周围没有录屏、投屏或旁观者。
- 不要把真实密钥粘贴到聊天软件、搜索框或公开代码仓库。
- 怀疑密钥泄露时不要继续沿用,应在账户设置中重新绑定。
常见问题
Base32密钥是不是密码?
它不是账户登录密码,但属于长期认证凭证,敏感程度接近密码。获得密钥的人可以持续计算有效TOTP验证码。
Base32末尾没有等号正常吗?
正常。标准编码可以使用填充符,但许多TOTP实现会省略末尾等号,并在解析时自行补齐。