用python解密十六进制字符串

时间:2016-03-01 21:46:26

标签: python string encryption hex aes

我用Java加密了一个String(在Android上),我得到'A14E71A6F4E8D8E465C3C302C2A96BD2'作为字节数组。

我现在想用python加密它,但它不起作用:

cipher = 'A14E71A6F4E8D8E465C3C302C2A96BD2'
aes = AES.new(key, AES.MODE_CBC, iv)
print aes.decrypt(cipher)

我已经搜索了互联网,但没有找到解决方案。

提前致谢

2 个答案:

答案 0 :(得分:2)

在Python 2中,您可以使用str.decode()解码十六进制字符串:

from Crypto.Cipher import AES

cipher = 'A14E71A6F4E8D8E465C3C302C2A96BD2'
aes = AES.new(key, AES.MODE_CBC, iv)
print aes.decrypt(cipher.decode('hex'))

如果其他所有内容(iv,密钥,加密模式)都可以使用。

如果您希望在Python 2和Python 3中都能使用它,那么您可以使用binascii.unhexlify()解码十六进制编码的字符串:

from binascii import unhexlify

cipher = unhexlify(b'A14E71A6F4E8D8E465C3C302C2A96BD2')

答案 1 :(得分:0)

这可能还不够,你还没有说明这是如何加密的,但至少你需要在解密前对其进行十六进制解码。

cipherData = binascii.unhexlify(cipher)
...
print aes.decrypt(cipherData)