为什么导出的ECDSA密钥看起来类似?

问题描述 投票:0回答:1

我使用此代码段查看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

这是正常的吗?

c# .net dsa
1个回答
0
投票

“因为私钥以公钥开头

我相信情况就是这样。这是针对GenericPrivateBlob记录的:

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

通用私钥BLOB可以包含任何类型的私钥,并且不一定包含相应的公钥。只能通过检查BLOB来确定BLOB包含的密钥类型。

强调我的,但在这种情况下,看起来公钥似乎在私钥之前。

© www.soinside.com 2019 - 2024. All rights reserved.