binascii.Error: Invalid base64-encoded string: number of data characters (213) cannot be 1 more than a multiple of 4
时间: 2024-02-23 12:03:22 浏览: 492
这个错误通常是因为base64编码的字符串长度不是4的倍数导致的。在Python中,base64编码的字符串长度应该是4的倍数,如果不是,就会出现这个错误。
解决方法是在base64编码字符串后面补上适当数量的等号,使其长度变为4的倍数。具体来说,如果长度模4余1,则需要补3个等号;如果余2,则需要补2个等号;如果余3,则需要补1个等号。
下面是一个示例代码,可以用于自动补齐base64编码字符串:
``` python
import base64
def fix_base64(s):
missing_padding = 4 - len(s) % 4
if missing_padding:
s += b'='*missing_padding
return s
def rsa_decode(cipher_text, private_key):
key = RSA.importKey(base64.b64decode(private_key))
cipher = PKCS1_v1_5.new(key)
cipher_text = fix_base64(cipher_text.encode('utf-8'))
text = cipher.decrypt(base64.b64decode(cipher_text), None)
return text.decode('utf-8')
```
在这个示例代码中,`fix_base64` 函数用于补齐base64编码字符串,`rsa_decode` 函数中使用了该函数来解决上面提到的问题。
阅读全文