在存在填充的情况下,使用decode64解码不正确的填充时出错吗?

时间:2018-11-20 08:18:42

标签: python base64 decode

使用我正在使用的代码,每当编码消息的数据上有一个Enter“时,我都会得到一个错误信息"?。当在线使用解码器时,我会得到正确的值"Incorrect Padding"value1都在下面,但是对于value2应该有value2的地方,我得到了例外。

代码是:

"?"

解码value1 = "Y29udGludWENCg==" expected1 = b'continua\r\n' value2 = "Y29udGludWE_DQo=" expected2 = b'continua?\r\n' data1 = base64.b64decode(value1) assert data1 == expected1 data2 = base64.b64decode(value2) assert data2 == expected2 会引发value2异常,但是数据具有正确的填充量(binascii.Error: Incorrect padding的长度是4的倍数)。

1 个答案:

答案 0 :(得分:0)

您没有标准的Base64数据,您具有 URL安全的base64数据。

Base64通常使用字母,数字以及/+字符,但是后两个在URL中具有特殊含义,因此使用了Base64url encoding的替代方式,它使用了-_个字符。

使用base64.urlsafe_b64decode() function解码以下字符串:

data2 = base64.urlsafe_b64decode(value2)

演示:

>>> import base64
>>> value2 = "Y29udGludWE_DQo="
>>> base64.urlsafe_b64decode(value2)
b'continua?\r\n'