作为一项自学练习,我正在尝试学习如何使用一些 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 个字节。我认为这可能是一个打字问题,但我不知道如何纠正它。任何人都可以帮忙吗?
谢谢!