独学の練習として、pycrypto ライブラリのいくつかの使用方法を学ぼうとしています。AES を使用して CBC_MODE で暗号文文字列を復号化する必要があります。暗号文、鍵、および IV がすべて与えられます。ここに私が書いたコードがあります:
from Crypto.Cipher import AES
mode = AES.MODE_CBC
key = "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1"
ciphertext = "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1";
iv = ciphertext[:32]
ciphertext = ciphertext[32:]
decryptor = AES.new(key, mode, iv)
plaintext = decryptor.decrypt(ciphertext)
print plaintext
これを実行すると、次のエラーが表示されます。
ValueError: IV は 16 バイト長でなければなりません
IV 文字列が 32 個の 16 進文字であるため、16 バイトであることはわかっています。これはタイピングの問題かもしれないと思いますが、修正方法がわかりません。誰でも助けることができますか?
ありがとうございました!