用 python 解密十六进制字符串

Decrypt hex string with python

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

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

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

我已经在网上搜索过了,但没有找到解决办法。

提前致谢

可能还不够,你没有说这是怎么加密的,但至少你得先十六进制解码再解密。

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

在 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')