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());