0

我正在修改一个 python 脚本。有一个解码字符串的函数,但它给我的错误是传递给解密的数据不是 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?

非常感谢 :)

4

1 回答 1

0

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

如果你的密文value不是块长度的倍数,要么它没有使用相同的算法或参数加密,要么它不包含你认为的内容。

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

于 2014-02-25T22:08:13.787 回答