【问题标题】:Resolving incorrect padding error while b64 decoding?在 b64 解码时解决不正确的填充错误?
【发布时间】:2018-04-28 22:33:09
【问题描述】:

功能说明: decodexorbase64(string, key) 获取前一个的输出 函数(异或字符串和 base64 编码键)并返回 原始字符串,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

我可以在我的代码中写什么来避免这个错误?

【问题讨论】:

  • 我对你的问题一无所知。您的参数与块中的变量不匹配,并且您似乎半随机地混合了二进制和各种编码。

标签: python encryption encoding cryptography base64


【解决方案1】:

您应该将二进制与二进制进行异或,而不是将基数 64 与基数 64 进行异或,并期望它返回基数 64。如果对基数 64 的两个 ASCII 编码进行异或,那么您可能会得到许多接近零的字节(因为第一位可能匹配),这似乎反映了问题中的code 或string。

如果需要,首先解码,然后异或,如果需要文本作为输出,则再次编码。


注意事项:

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

【讨论】:

    猜你喜欢
    • 2021-07-14
    • 2019-07-11
    • 1970-01-01
    • 2020-12-18
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多