我正在尝试解密使用XTEA算法加密的数据。我有128位密钥。
到目前为止我检查的所有实现都接受密钥为16个字符串(ASCII)。但是,我的密钥是十六进制格式(32个字符)或4个DWORD。
是否有实现可以指定十六进制格式的密钥来解密数据?
我在网上检查了一些实现,例如:
https://code.google.com/p/zzt-code-base/source/browse/trunk/src/python/xtea.py
需要修改源代码以使用十六进制格式的密钥进行解密。
特别是在函数xtea_decrypt()中的行:
k = struct.unpack(endian+"4L",key)
我需要进行哪些修改才能以十六进制格式指定密钥?
此外,如果现有的实现可以接受十六进制格式的密钥,那将有所帮助。
答案 0 :(得分:0)
现代加密技术适用于字节,而不适用于字符串。这包括十六进制字符串。因此,要向函数提供以十六进制指定的密钥,请先致电binascii.unhexlify(hexString)
。
在您指向的代码中,您可以使用iv=binascii.unhexlify('0000000000000000')
替换默认的iv参数分配。
所以这适用于我的机器(作为Python菜鸟):
key = binascii.unhexlify('00000000000000000000000000000000')
iv = binascii.unhexlify('0000000000000000')
print data == x.xtea_cbc_decrypt(key, iv, x.xtea_cbc_encrypt(key, iv, data))