gpt4 book ai didi

c# - 获取 X509Certificate2 私钥和公钥

转载 作者:行者123 更新时间:2023-11-30 21:41:17 26 4
gpt4 key购买 nike

我在 .NET 4.5 中有一个现有应用程序,我在其中使用 X509Certificate2 私钥和公钥。我正在将它迁移到 .net 核心。我不知道如何将私钥和公钥值读入 XML 格式。我在 .NET 4.5 中有以下代码

var PublicKey = certificate.PublicKey.Key.ToXmlString(false);
var PrivateKey = certificate.PrivateKey.ToXmlString(true);

PrivateKey 属性被删除时,我如何在 .net core 中实现相同的效果?

我知道 ImportParametersExportParameters 方法可以转换成 XML 字符串。但我正在查看的是访问 PublicKey.KeyPrivateKey 属性,这让我得到了可以转换为 RSACrypoServiceProvider 的 AsymmetricAlgorithm 对象。

.netCore 中有方法GetRSAPublicKeyGetRSAPrivateKey,它们返回RSACng 对象。使用此证书的应用程序的另一端使用 RSACryptoServiceProvider 验证数据。

最佳答案

X509Certificate2.PrivateKeyPublicKey.Key 没有被引入 .NET Core,正是因为每个人都将它们转换为 RSACryptoServiceProvider。在 Windows 上得到的是 RSACng,而在 Linux 上是 RSAOpenSsl

您真的应该将所有类型引用更改为 RSA,因为 .NET 4.6(和 .NET Core 1.0)更正了 RSA 基类以公开所有必需的 Sign/Verify//加密/解密方法。

.NET Core 不具备读取或写入 XML 格式 key 的能力。即使 .NET Core 2.0 的方法再次存在,它们也只是抛出一个 PlatformNotSupportedException,因为存在循环依赖:

  • 密码学.算法 -> XML
  • XML -> 网络(包括 TLS)
  • 网络/TLS -> X509Certificates
  • X509Certificates -> 密码学.算法

如果您需要非对称 key 的 XML 序列化,您需要将其写入您自己的库中。

关于c# - 获取 X509Certificate2 私钥和公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43583428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com