Python:在 base64 解码时忽略“不正确的填充”错误

新手上路,请多包涵

我有一些 base64 编码的数据,即使其中存在填充错误,我也想将其转换回二进制。如果我使用

base64.decodestring(b64_string)

它会引发“不正确的填充”错误。还有别的办法吗?

更新:感谢所有反馈。老实说,提到的所有方法听起来都有些碰运气,所以我决定试试 openssl。以下命令起到了一定作用:

 openssl enc -d -base64 -in b64string -out binary_data

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

阅读 1.1k
1 个回答

看来您只需要在解码之前向字节添加填充即可。关于这个问题还有许多其他答案,但我想指出(至少在 Python 3.x 中) base64.b64decode 将截断任何额外的填充,前提是首先有足够的填充。

所以,类似的东西: b'abc='b'abc==' 一样好用(和 b'abc=====' 一样)。

这意味着您可以添加所需的最大填充字符数——即两个 ( b'==' )——base64 将截断任何不需要的字符。

这让你写:

 base64.b64decode(s + b'==')

这比:

 base64.b64decode(s + b'=' * (-len(s) % 4))

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

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