【问题标题】:Why do exported ECDSA keys look similar?为什么导出的 ECDSA 密钥看起来很相似?
【发布时间】:2019-02-11 02:26:12
【问题描述】:

我使用这个 sn-p 查看 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();
        }

但我看到这些密钥看起来非常相似,因为私钥以公钥开头:

这正常吗?

【问题讨论】:

    标签: c# .net dsa


    【解决方案1】:

    "因为私钥以公钥开头

    我相信是这样的。这是为GenericPrivateBlob 记录的:

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

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

    强调我的,但在这种情况下,它看起来确实像公钥在私钥之前。

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      相关资源
      最近更新 更多