我用Java加密了一个String(在Android上),我得到'A14E71A6F4E8D8E465C3C302C2A96BD2'作为字节数组。
我现在想用python加密它,但它不起作用:
cipher = 'A14E71A6F4E8D8E465C3C302C2A96BD2'
aes = AES.new(key, AES.MODE_CBC, iv)
print aes.decrypt(cipher)
我已经搜索了互联网,但没有找到解决方案。
提前致谢
答案 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)