错误:不正确的填充如何用/

2024-09-30 22:12:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到了一个用base64编码的字符串,我正在使用python对其进行解码,但解码失败,我发现该字符串后面跟有/ends,我不知道如何解码,我还没有找到答案,谁能帮我

data = 'dXN1c19pZD0xMDg2P2RvY01kPTE3Mzc4JnR5cGU9bmV3/'

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

Tags: 字符串答案编码data解码standardprintbase64
1条回答
网友
1楼 · 发布于 2024-09-30 22:12:54

data是一个普通的base64编码字符串,只包含来自base64 character set的字符。问题实际上是末尾的/,因为base64字符串的长度应该可以被4除,不带余数。因此,如果有必要实现这一点,应该在末端添加填充物。结尾的/是45个字符,这意味着44个base64字符可以解码为33字节,最后一个字符只编码6位

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

所以你可以这样把它剪掉:

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

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

或者询问/检查发送者的代码,以了解为什么结尾有这个孤独的/

相关问题 更多 >