用 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')
我用 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')