1

XTEA アルゴリズムを使用して暗号化されたデータを復号化しようとしています。私は128ビットの鍵を持っています。

これまでに確認したすべての実装は、キーを 16 文字の文字列 (ASCII) として受け入れます。ただし、私のキーは 16 進数形式 (32 文字) または 4 つの DWORD です。

データを復号化するためにキーを 16 進形式で指定できる実装はありますか?

オンラインでいくつかの実装を確認しました。たとえば、次のとおりです。

https://code.google.com/p/zzt-code-base/source/browse/trunk/src/python/xtea.py

16 進数形式のキーを使用して復号化するには、ソース コードを変更する必要があります。

具体的には、次の行の関数 xtea_decrypt() で:

k = struct.unpack(endian+"4L",key)

キーを 16 進形式で指定できるようにするには、どのような変更を加える必要がありますか?

また、16 進形式のキーを受け入れることができる既存の実装があれば、それが役立ちます。

4

1 に答える 1

1

最新の暗号化は、文字列ではなくバイトで機能します。これには、16 進文字列が含まれます。そのため、関数に 16 進数で指定されたキーを入力するには、まず を呼び出してくださいbinascii.unhexlify(hexString)

指しているコードでは、たとえば、デフォルトの iv パラメータ割り当てを に置き換えることができますiv=binascii.unhexlify('0000000000000000')

したがって、これは私のマシンで(Python noobとして)機能します:

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 に答える