Почему экспортированные ключи ECDSA выглядят одинаково?
Я использую этот фрагмент для просмотра закрытых и открытых ключей, сгенерированных DSA:
byte[] publicKey, hash, signedHash;
string strToSign = "Hello, world!";
SHA512Managed shaComputer = new SHA512Managed();
using (ECDsaCng dsaSigner = new ECDsaCng())
{
publicKey = dsaSigner.Key.Export(CngKeyBlobFormat.GenericPublicBlob);
Console.WriteLine($"DSA public key: {TransformHash(publicKey)}");
Console.WriteLine();
byte[] privateKey = dsaSigner.Key.Export(CngKeyBlobFormat.GenericPrivateBlob);
Console.WriteLine($"DSA private key: {TransformHash(privateKey)}");
Console.WriteLine();
}
Но я вижу, что эти ключи выглядят очень похоже, потому что закрытый ключ начинается с открытого ключа:
Это нормально?
1 ответ
"потому что закрытый ключ начинается с открытого ключа
Я считаю, что это так. Это задокументировано для GenericPrivateBlob
:
Общий закрытый ключ BLOB может содержать закрытый ключ любого типа и не обязательно должен содержать соответствующий открытый ключ. Тип ключа, который содержит BLOB-объект, может быть определен только путем проверки BLOB-объекта.
Акцент мой, однако в этом случае это выглядит так, как будто открытый ключ добавлен перед закрытым ключом.