首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pycrypto解密AES

用pycrypto解密AES
EN

Stack Overflow用户
提问于 2012-07-16 06:38:59
回答 3查看 5.8K关注 0票数 1

作为一项自学练习,我正在努力学习如何使用一些pycrypto库。我需要使用AES解密CBC_MODE中的密文字符串。密文、钥匙和IV都是给出的。下面是我编写的代码:

代码语言:javascript
复制
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个字节。我认为这可能是一个打字问题,但我不知道如何纠正。有人能帮忙吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-20 17:29:05

您的字符串只包含十六进制字符,但它们仍然是普通字符串,因此每个字符都是计数的。

因此,您的IV字符串是32字节,只要您将它从ciphertext中切片出来。

票数 1
EN

Stack Overflow用户

发布于 2013-04-10 02:23:19

我怀疑你是对的,这取决于打字。试一试其中一种:

iv =binascii.unhexlify(密文:32)

iv =long(密文:32,16)

票数 1
EN

Stack Overflow用户

发布于 2015-02-13 23:19:27

告诉电脑你在处理巫术。它把它当作一根绳子。iv =iv.decode(‘十六进制’);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11499224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档