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

Python XTEA使用十六进制格式的密钥进行解密,python,cryptography,xtea,Python,Cryptography,Xtea,我正在尝试解密使用XTEA算法加密的数据。我有128位的钥匙 到目前为止,我检查的所有实现都将密钥接受为16字符字符串(ASCII)。但是,我的密钥是十六进制格式(32个字符)或4个DWORD 是否有一个实现,我可以指定十六进制格式的密钥来解密数据 我在线检查了一些实现,例如: 它需要修改源代码,以便使用十六进制格式的密钥进行解密 特别是在函数中,行中的xtea_decrypt() k = struct.unpack(endian+"4L",key) 我需要做什么修改才能以十六进制格式指定密

我正在尝试解密使用XTEA算法加密的数据。我有128位的钥匙

到目前为止,我检查的所有实现都将密钥接受为16字符字符串(ASCII)。但是,我的密钥是十六进制格式(32个字符)或4个DWORD

是否有一个实现,我可以指定十六进制格式的密钥来解密数据

我在线检查了一些实现,例如:

它需要修改源代码,以便使用十六进制格式的密钥进行解密

特别是在函数中,行中的xtea_decrypt()

k = struct.unpack(endian+"4L",key)
我需要做什么修改才能以十六进制格式指定密钥


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

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

例如,在您指向的代码中,您可以使用
iv=binascii.unhexlify('0000000000000000')
替换默认的iv参数赋值

这在我的机器上(作为Python noob)起作用:


好问题。我不会回答,因为我不是python专家。python的旧版本似乎把字节和字符混淆了(就像许多语言一样)。您要做的是以字节而不是十六进制字符指定密钥。您可以在库之外进行十六进制到字节的转换-可能只是“hexstring”。解码(“hex”)。现代加密操作是字节,而不是字符串。
key = binascii.unhexlify('00000000000000000000000000000000')
iv = binascii.unhexlify('0000000000000000')
print data == x.xtea_cbc_decrypt(key, iv, x.xtea_cbc_encrypt(key, iv, data))