I écrit le code ci-dessous pour extraire blob clé publique ECDH:Pourquoi la clé publique blob contient-elle le type de clé et la longueur de la clé dans le format big endian dans .net framework 4.7?
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}");
Je suis sortie suivante:
clé publique (longueur d'octets avec des informations de format): 72
clé publique (hex avec des informations format): 45434B3120000000C3F1AC1F3D272BE14A26BE35B1A31F6C969425259162C06BEBE6AE977809984FC509ED5154E1E4782079D4BDDCDA6E083E48D271755267AD765CAD0E66B9FD9F
Les 4 premiers octets (type de clé) sont 45434B31 (au format hexadécimal). Cela semble être dans le grand format d'Endian où this MSDN link indique qu'il devrait être dans le petit format d'Endian, qui dicte que ces 4 octets devraient être 314B4345 (encore, comme montré dans ce lien). Le lien utilise également "magic", au lieu de "key type". Les 4 octets suivants sont 20000000 (au format hexadécimal) semble être dans le petit format endian (comme le dit le lien ci-dessus).
Y a-t-il une explication logique expliquant pourquoi le type de clé est formaté en big endian? Ou est-ce que je manque quelque chose ici?
Little-endian signifie que l'octet le moins significatif (0x45) vient en premier. – wRAR