从对象中删除字节(python解密河豚ECB)

时间:2014-02-25 20:25:13

标签: python encryption byte ecb

我正在修改python脚本。有一个函数解码字符串,但它给我的错误,传递给decrypt的数据不是8的倍数。我试图添加它需要的字节,但我不知道如何删除它们在返回对象之前。

这是功能:

def plain(value, key):

    length = 8 - (len(value) % 8)
    value += chr(length)*length
    obj= Crypto.Cipher.Blowfish.new(
        key, Crypto.Cipher.Blowfish.MODE_ECB).decrypt(
            value.decode('string_escape'))
    return obj

我无法更改解密模式,因为它被另一个脚本所占据的日期 其中我没有消息来源。

如何在没有我在decript之前添加的额外字节的情况下返回正确的obj?

非常感谢:)

1 个答案:

答案 0 :(得分:0)

您不应在解密时添加填充,在加密时添加填充以使明文成为块长度的倍数。

如果您的密文value不是块长度的倍数,则它不是使用相同的算法或参数加密,或者它不包含您认为它的作用。

我的猜测是它是十六进制字符串或base64编码字符串,而decrypt方法接受字节字符串。