binascii.Error: Incorrect padding How to decode the end with /

binascii.Error: Incorrect padding How to decode the end with /

我收到一个base64编码的字符串,我用python解码,解码失败,发现字符串后面是/结尾,不知道怎么解码,我还没找到答案,谁能帮帮我

data = 'dXN1c19pZD0xMDg2P2RvY01kPTE3Mzc4JnR5cGU9bmV3/'

print(base64.urlsafe_b64decode(data))
print(base64.standard_b64decode(data))
print(base64.b64decode(data))

data 是一个普通的 base64 编码字符串,只包含来自 base64 character set 的字符。问题确实是最后的 / ,因为 base64 字符串的长度应该可以被 4 整除而没有余数。因此,如有必要,应在末尾进行填充以实现此目的。最后的 / data 是 45 个字符长,这意味着 44 个 base64 字符可以解码为 33 个字节,然后最后一个字符只编码 6 位。

仅添加填充不能解决问题,因为您只能添加两个填充字符(=),但您还需要一个来弥补缺少的两位。

所以你可以这样剪掉它:

lenmax = len(data) - len(data)%4   
print(base64.b64decode(data[0:lenmax]).decode())

或添加类似 0== 的内容以最多填充 48 个字符。但是你会在 decode() 中得到一个错误,我不喜欢发明额外的数据。

或者ask/check发件人的代码找找,为什么最后会有这个寂寞/