我试图将一个字符串解码为 base64,然后将其解压为 zlib,但出现了以下消息:
binascii.Error: Invaild base64-encoded string: number of data characters(1957) cannot be 1 more than a multiple of 4
代码:
def decode_token(token):
# token is a string
token_decode = base64.b64decode(token.encode())
token_string = zlib.decompress(token_decode)
return token_string
原文由 karokp 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试用
=
字符的正确数量(1,2 或 3)填充您的输入,以使其最终长度成为 4 的倍数。如果您的令牌长度已经是 4 的倍数,请跳过该步骤(len(padded_token)%4 == 0
)。如果您的输入使用字符
-_
,您可能仍然会遇到相同的错误,在这种情况下,这意味着它是 urlsafe 编码的。在这种情况下,使用base64.urlsafe_b64decode
而不是base64.b64decode
对其进行解码。