1

XTEA アルゴリズムを C# で実装しようとしていますが、それを行う関数を見つけました。

ただ、越えなければならないハードルがあります。この関数では、データとキーを UInt32 配列に入れる必要があります。

時間のために、キーを使用可能な形式にすることに関連するものだけを投稿します。

C#擬似コードでやろうとしていることは次のとおりです。

            String keyStr = "foobar";
            byte[] keyBytes = Encoding.ASCII.GetBytes(keyStr);
            /* keyBytes = 66, 6F, 6F, 62, 61, 72 (obviously I need to pad it
            out to be followed by i 00's, i = 16 - keyBytes.Length); */

            UInt32[] keyArr = new UInt32[4];
            keyArr[0] = keyBytes[0 to 3];
            keyArr[1] = keyBytes[4 to 7];

Bitwise OR などを使用する必要があると聞いたことがありますが、それがどのように機能するのか完全にはわかりません。また、BitConverter.ToString を使用して正しく解析し、結果が文字列「666F6F62」であると仮定すると、それを uint32 の 1 つに変換できると聞いたことがあります。しかし、それはずさん/怠惰/非効率的です。

この質問を書いている間、私もこれを試しましたが、うまくいかなくても明確になるかもしれません:

            String keyStr = "foobar"

            byte[] keyBytes = new byte[16];
            Encoding.ASCII.GetBytes(keyStr).CopyTo(keyBytes, 0);

            UInt32[] keyArr = new UInt32[4];

            Buffer.BlockCopy(keyBytes, 0, keyArr[0], 0, 4);

            Console.WriteLine("keyBytes[]: " + BitConverter.ToString(keyBytes));
            Console.WriteLine(keyArr[0].ToString());
4

1 に答える 1