使用 decode64 解码不正确的填充时出错,存在填充?
Error decoding incorrect paddling with decode64, with padding present?
使用我正在使用的代码,每次编码消息的数据上有一个 "?
" 时,我都会返回错误 "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
异常,但数据有正确的填充量(value2
的长度是4的倍数)。
您没有标准的 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'
使用我正在使用的代码,每次编码消息的数据上有一个 "?
" 时,我都会返回错误 "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
异常,但数据有正确的填充量(value2
的长度是4的倍数)。
您没有标准的 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'