我寫了下面的代碼提取ECDH公共密鑰團:爲什麼公鑰BLOB在.net framework 4.7中以big endian格式包含密鑰類型和密鑰長度?
var curve = ECCurve.NamedCurves.nistP256;
ECDiffieHellman ecdh = ECDiffieHellman.Create(curve);
var bytes = ecdh.PublicKey.ToByteArray();
Console.WriteLine($"Public Key (byte length with format info): {bytes.Length}");
var hexString = BitConverter.ToString(bytes).Replace("-", string.Empty);
Console.WriteLine($"Public Key (hex with format info): {hexString}");
我得到了以下的輸出:
公鑰(與格式信息的字節長度):72
公鑰(十六進制格式信息):45434B3120000000C3F1AC1F3D272BE14A26BE35B1A31F6C969425259162C06BEBE6AE977809984FC509ED5154E1E4782079D4BDDCDA6E083E48D271755267AD765CAD0E66B9FD9F
前4個字節(密鑰類型)是45434B31(十六進制格式)。這似乎是大端格式,其中this MSDN link指示它應該是小端格式,這意味着這4個字節應該是314B4345(同樣,如本鏈接所示)。該鏈接還使用「魔術」,而不是「鑰匙類型」。接下來的4個字節是20000000(十六進制格式)似乎是小尾數格式(如上面的鏈接所示)。
是否有一個合理的解釋,爲什麼鍵類型被格式化爲大端?或者我在這裏錯過了什麼?
Little-endian表示最低有效字節(0x45)首先出現。 – wRAR