Почему экспортированные ключи ECDSA выглядят одинаково? - PullRequest
0 голосов
/ 06 сентября 2018

Я использую этот фрагмент для просмотра закрытых и открытых ключей, сгенерированных 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();
        }

Но я вижу, что эти ключи выглядят очень похоже, потому что закрытый ключ начинается с открытого ключа:

enter image description here

Это нормально?

1 Ответ

0 голосов
/ 06 сентября 2018

"потому что закрытый ключ начинается с открытого ключа

Я полагаю, что это так. Это задокументировано для GenericPrivateBlob:

https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.cngkeyblobformat.genericprivateblob?redirectedfrom=MSDN&view=netframework-4.7.2

Общий закрытый ключ BLOB может содержать закрытый ключ любого типа и не обязательно должен содержать соответствующий открытый ключ . Тип ключа, который содержит большой двоичный объект, может быть определен только путем изучения большого двоичного объекта.

Подчеркните мое, однако в этом случае похоже, что перед закрытым ключом открыт открытый ключ.

...