我正在修改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?
非常感谢:)
答案 0 :(得分:0)
您不应在解密时添加填充,在加密时添加填充以使明文成为块长度的倍数。
如果您的密文value
不是块长度的倍数,则它不是使用相同的算法或参数加密,或者它不包含您认为它的作用。
我的猜测是它是十六进制字符串或base64编码字符串,而decrypt
方法接受字节字符串。