Python: 在 base64 解码时忽略 'Incorrect padding' 错误

195

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

base64.decodestring(b64_string)

它引发了一个“填充不正确”的错误。还有其他方法吗?

更新:感谢所有的反馈。老实说,提到的所有方法听起来都有点靠运气,所以我决定尝试openssl。以下命令非常有效:

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

8
你是否尝试过使用base64.b64decode(strg, '-_')?在你没有提供任何示例数据的情况下,这是解决你问题最有可能的Python方法。之前提出的"方法"只是调试建议,鉴于提供的信息很少,它们必然是"靠瞎猜"的。 - John Machin
4
@John Machin: 是的,我确实尝试了你的方法,但没有成功。这些数据是公司机密。 - FunLovinCoder
7
尝试运行 base64.urlsafe_b64decode(s)。该函数用于解码使用URL安全字符集编码的Base64字符串。 - Daniel F
1
请问您可以提供此代码的输出结果吗?sorted(list(set(b64_string)))。通过此方式,我们可以知道用于编码原始数据的字符集,进而提供一个更加准确的解决方案,同时不会泄露任何公司机密信息。 - Brian Carcich
1
是的,我知道这个问题已经解决了,但说实话,openssl 的解决方案对我来说也有些靠运气。 - Brian Carcich
显示剩余2条评论
22个回答

-5

清除浏览器的Cookie,然后重新检查,应该可以正常工作。


1
这个答案似乎应该在其他地方,因为没有涉及到浏览器...? - Jason Capriotti

-6
在我的情况下,我删除了特定项目的venv后遇到了这个错误,并且它对每个字段都显示错误,所以我尝试通过更改浏览器(从Chrome到Edge)来解决问题,实际上它起作用了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接