Python“;“填充不正确”;执行base64 urlsafe解码时出错

Python“;“填充不正确”;执行base64 urlsafe解码时出错,python,base64,Python,Base64,我正在尝试使用base64.urlsafe\u b64decode对2个字符串(urlsafe)进行base64解码,但我一直收到“不正确的填充”错误。我不能显示这两个字符串,但我可以简单地描述它们 第一个字符串:131个字符长,包含非urlsafe字符 第二个字符串:115个字符长,包含非urlsafe字符 该函数能够解码包含非urlsafe字符的其他字符串,因此我假设这不是问题所在,并且这些字符在解码之前会被删除 我尝试将==添加到两个字符串中,以确保这不是缺少=填充的问题,但它不起作用

我正在尝试使用
base64.urlsafe\u b64decode
对2个字符串(urlsafe)进行base64解码,但我一直收到“不正确的填充”错误。我不能显示这两个字符串,但我可以简单地描述它们

  • 第一个字符串:131个字符长,包含非urlsafe字符
  • 第二个字符串:115个字符长,包含非urlsafe字符
该函数能够解码包含非urlsafe字符的其他字符串,因此我假设这不是问题所在,并且这些字符在解码之前会被删除

我尝试将
==
添加到两个字符串中,以确保这不是缺少
=
填充的问题,但它不起作用。只有当我从字符串中删除最后一个字符时,我才能够解码,并且无论是否存在
=
填充,它都能工作,即没有填充的130个字符的字符串是可解码的。然而,当我尝试使用CyberChef解码时,我能够解码两个原始字符串。我不太喜欢删除最后一个字符,因为解码后的字符串也丢失了最后一个字符,这似乎不是正确的解决方案


我不明白使用
base64
函数解码和CyberChef做什么有什么区别。如何使用
base64
解决此问题?

在这两种情况下,您只需要一个
=
就可以使其成为4的倍数。当b64urldecode显然不是url安全编码时,为什么要使用它?您已经给出了131和115的计数,但其中有多少是有意义的base64字符?如果计数是1 mod 4,那就是问题所在,我会问字符串是什么编码的(以及它们是如何有无意义的字符散布的)。@Ry-我刚刚读到了“非urlsafe”字符,所以我猜它只是普通的Base64,而不是Base64url@Ry-在115 ch字符串中,113是有意义的base64 url字符。我删除了2个非base64url字符,添加了3个“=”填充,但仍然得到了不正确的填充错误。@jps我被告知字符串是url安全编码的。事实上,这些字符串包含“-”和“\u1”。我提到的非urlsafe字符不在base64或base64 url的字母表集中。我以为图书馆会像CyberChef那样删除非字母字符并解码。