base64.b64解码功能无法正常工作,为什么?



i解码这两个字符串(见下文(,但是test1和test2具有相同的结果,这意味着它们相同。为什么?B64Decode函数似乎在" =="之后剪切了字符串。我做错了什么?

test1 = base64.b64decode("IBFIgACAAIAAAA==Iq0yAACAMgAwMA==NzEI9AFkZEsegA==IHEINzdLS0sAAA==") test2 = base64.b64decode("IBFIgACAAIAAAA==")

也许很高兴知道为什么会发生这种情况以及在这种情况下的含义是什么,而它在base64中的用户酶。

您假设base64decode函数在某种程度上剪切了" =="的字符串,因为base64decoder将其解释为base64字符串的末端。

重要的是要知道" ="字符的工作方式,并且它更像是在base64编码中的特殊字符,并且没有编码它的相应字符。

只是为您提供简短的概述,而不会深入研究此主题:

如果base64encode函数获取字符串作为输入来生成base64编码字符串,则输入字符串的长度必须划分为3。如果不是这样,则base64是自动的,在base64编码字符串末尾添加填充字符" =",以告诉base64decoder函数需要多少字节才能将输入字符串填充到可分配的3个字符串,并且他可以解码字符串字符串正确回到原始字符串。

因此,在您的情况下,base64decoder会看到您的" ="字符串中的字符" ibfigacaaaaaaa ==",并且可能将其解释为base64字符串的末端。

结论

如果字符串不是3个倍数,并且它不会编码任何字符。

看起来您正在将多个编码字符串串在一起。那不是编码的工作方式。

在编码它们之前,将字符串一起加在一起。

,或者如果您试图解码多个编码字符串,请循环循环:

encoded_strings = ["IBFIgACAAIAAAA==","Iq0yAACAMgAwMA==","NzEI9AFkZEsegA==","IHEINzdLS0sAAA=="] 
for i in encoded_strings:
    print(base64.b64decode(i))

最新更新