我真的很困惑如何使用计数器模式在 pycrypto 中进行 AES 解密。据我了解这个过程,如果我从一个已知的 IV 开始解密第一个块,那么对于每个连续的块,我必须增加 IV。但我不知道如何做到这一点。
另外,我对 python 完全陌生,你会很容易看到。我的问题在于我如何实现我的课程以及我如何从解密器中调用它。
这是我迄今为止编写的代码:
class IVCounter(object):
def incrIV(self):
return self[:15] + chr(ord(self[15:]) + 1)
def decryptCTR(key, ciphertext):
#convert the key into a 16 byte string
key = array.array('B', key.decode("hex")).tostring()
#convert the iv into a 16 byte string
iv = array.array('B', iv.decode("hex")).tostring()
print AES.new(key, mode, counter=IVCounter.incrIV(iv)).decrypt(ciphertext)
return
这是我得到的错误:
TypeError:必须使用 IVCounter 实例作为第一个参数调用未绑定的方法 incrIV()(改为获取 str 实例)
无论我尝试什么,我都无法让它工作。有人可以帮我理顺吗?
谢谢!