python中AES 128加密的输出长度

时间:2015-07-20 19:34:04

标签: python encryption hex aes pycrypto

当我尝试使用pycrypto将AES 128加密代码的输出转换为十六进制时。我正在使用hexlify。对于32位输入,输出为64位。对于任何输入,输出总是加倍,当使用在线编译器时,我得到一个完美的32位输出。看错了

在实现数据时,我应该将数据转换为与输入相同的格式。

text= 3235383334332b352b3934363230383037312b3100000000

key ='0123456789abcdef'

iv = '/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00'

encryptor = AES.new(key,mode,IV=iv)

output=encryptor.encrypt(text)

我将加密输出视为

?"?χ?v???
         ؛?3(???nyA??U?}??/??>

我想将其转换为我可以阅读的格式,因此将其转换为十六进制

efb82283cf87e7127696baad0c1bd89b3781331c289db9f96e7941d3cd55c77db8a72fdcdd3e1ac1bc9031c61c998e49

你能建议一些其他可读的格式,我可以把我的数据转换成??

1 个答案:

答案 0 :(得分:1)

我引用python documentation for binascii.hexlify(强调补充):

  

返回二进制数据的十六进制表示。数据的每个字节都转换为相应的2位十六进制表示。 结果字符串因此是数据长度的两倍

  

在实现数据时,我应该将数据转换为与输入相同的格式。

根本不要转换它。只需将其写为二进制数据。