binascii.Error: Invaild base64-encoded string: number of data characters(1957) cannot be more 1 than a multiple of 4

新手上路,请多包涵

我试图将一个字符串解码为 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.6k
1 个回答
  1. 尝试用 = 字符的正确数量(1,2 或 3)填充您的输入,以使其最终长度成为 4 的倍数。如果您的令牌长度已经是 4 的倍数,请跳过该步骤( len(padded_token)%4 == 0 )。

  2. 如果您的输入使用字符 -_ ,您可能仍然会遇到相同的错误,在这种情况下,这意味着它是 urlsafe 编码的。在这种情况下,使用 base64.urlsafe_b64decode 而不是 base64.b64decode 对其进行解码。

原文由 big_in_japan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏