カウンターモードを使用して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: バインドされていないメソッド incrIV() は、IVCounter インスタンスを最初の引数として呼び出す必要があります (代わりに str インスタンスを取得)
何を試しても、これを機能させることはできません。誰かが私をまっすぐにするのを手伝ってくれますか?
ありがとう!