我正在尝试在 C# 中实现 XTEA 算法,并且我找到了一个函数来为我做这件事。
但是,我必须克服一个障碍。该函数需要将数据和密钥放入 UInt32 数组中。
由于时间关系,我只会发布与将密钥转换为可用格式相关的内容。
这是我在 C# psuedocode 中尝试做的事情:
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 之一。但这似乎草率/懒惰/效率低下。
在写这个问题时,我也试过这个,也许它会澄清,即使它不起作用:
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());