如何避免 Python 中 b32encode.decode() 输出中的 '='?

How to avoid '=' in the output of b32encode.decode() in Python?


我正在生成一个秘密,用于为 Google 验证器生成二维码。

secret = b32encode(os.urandom(16)).decode()

此机密包含 iPhone 中的 Google 验证器无法识别的“=”符号。不过与 android 配合使用效果很好。

如何在生成密钥时避免'='符号?感谢任何帮助或指导。

谢谢指点。

因此,os.urandom(16) 产生了 16 个字节的数据。即 16 x 8 = 128 位。 b32encode 将该数据分成 5 位组,每个位具有 1 或 0,因此总共有 32 个值。

os.urandom(16) 产生的数据,即 128 位数据以这种方式分组。 25x5 位和 1x3 位。现在为了指示有空闲 space,即 2 位,使用带有“=”符号的适当填充。

为了删除'='符号,提供给b32encode的位数应该是5的倍数。所以,我将os.urandom(16)改为os.urandom(20)并得到了我期望的结果。