解决b64解码时不正确的填充错误?

时间:2018-04-28 22:33:10

标签: python encryption encoding cryptography base64

功能说明: decodexorbase64(string, key)获取前一个的输出   function(xor'd string和base64 encoded key)并返回   原始字符串,采用b'格式

我的代码:

def decodexorbase64(code, keyb64):
    keyoriginal = binascii.a2b_base64(key)
    stroriginal = binascii.a2b_base64(string)
    return (stroriginal, keyoriginal)

问题:

print(decodexorbase64(b'\x02\x01\x04\x00\x03\x00Y^\x00', b'a2VybWl0\n'))     给出错误:binascii.Error: Incorrect padding

我可以在代码中编写什么来避免此错误?

1 个答案:

答案 0 :(得分:0)

你应该用二进制xor二进制,而不是base 64和base 64,并期望它返回base 64.如果你对base 64的两个ASCII编码进行异或,那么你很可能会将许多字节设置为接近零(因为第一个位可能匹配) ),这似乎反映了问题中的forcode

首先解码,如果需要,然后是XOR,然后再次编码,如果你需要文本作为输出。

注意:

  • 我认为你在函数声明中重写了参数的名称;
  • 第一个数组(string)似乎是二进制,而不是基数64
  • 第二个数组有一个最终行终止符,它不是base 64 alphabet
  • 的一部分