You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python生成Google Authenticator密钥如何避免b32encode输出含'='符号

Base32密钥去除=符号的解决方案

=是Base32编码的标准末尾填充字符,HOTP/TOTP的官方规范允许直接省略该填充符,不会影响密钥的有效性与安全性。iPhone端Google Authenticator仅支持无填充的Base32密钥,因此直接移除填充符即可解决兼容问题。

实现方式1:生成后直接移除填充符

对原有代码做最小改动,直接删除编码结果末尾的所有=即可:

import os
from base64 import b32encode

# 生成无填充的Base32密钥
secret = b32encode(os.urandom(16)).decode().rstrip('=')

实现方式2:使用专用TOTP库生成

如果你在使用PyOTP这类二次封装的TOTP库,可以直接调用内置的密钥生成方法,天然输出无填充的兼容密钥:

import pyotp

# 生成符合全端Google Authenticator规范的密钥
secret = pyotp.random_base32()

注意事项

  • 仅可删除末尾的=填充符,不可修改密钥的其他字符,否则会导致密钥完全失效
  • 随机源保持16字节即可,对应无填充的Base32编码长度为32字符,符合安全规范要求

内容的提问来源于stack exchange,提问作者icemelting

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:24:05