1

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

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

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

4

1 回答 1

1

现代密码学适用于字节,而不是字符串。这包括十六进制字符串。因此,要为函数提供十六进制指定的键,请先调用binascii.unhexlify(hexString).

例如,在您指向的代码中,您可以将默认的 iv 参数分配替换为iv=binascii.unhexlify('0000000000000000').

所以这适用于我的机器(作为 Python 菜鸟):

key = binascii.unhexlify('00000000000000000000000000000000')
iv = binascii.unhexlify('0000000000000000')
print data == x.xtea_cbc_decrypt(key, iv, x.xtea_cbc_encrypt(key, iv, data))
于 2013-09-09T21:35:35.827 回答