使用十六进制格式的密钥进行XTEA解密

时间:2013-09-07 23:04:29

标签: python cryptography xtea

我正在尝试解密使用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)

我需要进行哪些修改才能以十六进制格式指定密钥?

此外,如果现有的实现可以接受十六进制格式的密钥,那将有所帮助。

1 个答案:

答案 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))