.net核心和.net框架之间的X509Certificate2.PublicKey.Key有什么区别

时间:2019-08-23 07:51:42

标签: c# .net .net-core

将我的一个项目从.NET Framework 4.6迁移到.NET Core 3.0时,我发现其中一行代码在新框架中不起作用:

X509Certificate2 clientCert;
var csp = (RSACryptoServiceProvider)clientCert.PublicKey.Key;

在.NET Framework中,此代码工作正常,但是,在.NET Core中,它仅引发了一个异常,指出“ System.Security.Cryptography.RSACng无法转换为System.Security.Cryptography.RSACryptoServiceProvider”。

我试图通过将密钥投射到RSACng来解决该错误:

X509Certificate2 clientCert;
var csp = (RSACng)clientCert.PublicKey.Key;

但是,VS2019告诉我,在名称空间“ System.Security.Cryptography”中找不到RSACng。这很奇怪,因为documentation说RSACng属于名称空间。

最后我通过以下方式解决此问题:

var csp = clientCert.GetRSAPublicKey();

所以我的问题是

  1. .NET Core和.NET Framework之间的X509Certificate2.PublicKey.Key的实际类型是否有区别?

  2. 为什么不能在.NET Core中使用RSACng?

0 个答案:

没有答案