作为一项自学习练习,我试图学习如何使用一些pycrypto库。我需要使用AES解密CBC_MODE中的密文字符串。我给出了密文,密钥和IV。这里是我写的代码:使用pycrypto进行AES解密
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 must be 16 bytes long
我知道IV字符串是32个进制的字符,因此,16个字节。我认为这可能是一个打字问题,但我不知道如何纠正它。谁能帮忙?
谢谢!
这将有助于解释**如何**告诉他正在使用十六进制计算机。 – kdopen 2015-02-13 23:33:23