C# 在.NET核心C中使用证书进行加密和解密#

C# 在.NET核心C中使用证书进行加密和解密#,c#,.net-core,x509certificate,C#,.net Core,X509certificate,使用C#,我希望能够使用证书对数据进行解密。但是在.NETCore(3.1)中,我无法使用证书进行解密。有趣的是,它在.NETFramework(4.8)中运行良好。在.NET Core中,我可以找到并查看证书,但当我尝试将其强制转换为RSACryptServiceProvider时,结果总是NULL。当我做同样的事情时,在.NETFramework中没有任何问题 我正在使用makecert.exe实用程序创建证书,如下所示: makecert.exe -r -pe -n "CN=My

使用C#,我希望能够使用证书对数据进行解密。但是在.NETCore(3.1)中,我无法使用证书进行解密。有趣的是,它在.NETFramework(4.8)中运行良好。在.NET Core中,我可以找到并查看证书,但当我尝试将其强制转换为
RSACryptServiceProvider
时,结果总是
NULL
。当我做同样的事情时,在.NETFramework中没有任何问题

我正在使用
makecert.exe
实用程序创建证书,如下所示:

makecert.exe -r -pe -n "CN=MyCert" -ss my -sr localmachine -eku 1.3.6.1.5.5.7.3.2 -len 2048 -e 01/01/2024 -sky Exchange C:\temp\MyCert.cer
在证书方面.NET核心是否发生了一些变化?还是我遗漏了什么

X509Certificate2 myCert = null;
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var certCollection = store.Certificates.Find(X509FindType.FindByThumbprint, "72A5303B5CB3EF70BEC360E29FA5E9D86886EA44", false);
if (certCollection.Count == 1)
{
    myCert = certCollection[0];
}
else
{
    return;
}

var rsakey = (RSA)myCert.PrivateKey;
// In .NET Core rsp is always null
var rsp = (RSACryptoServiceProvider)rsakey;

我在类似的StackOverflow问题上尝试了各种其他方法,但都没有效果。

Ciao,根据MSDN示例,要在.NET Core 3.1中获取私钥,必须调用
myCert.GetRSAPrivateKey()
Ciao,根据MSDN示例,要在.NET Core 3.1中获取私钥,必须调用
myCert.GetRSAPrivateKey()

将一些调试消息写入日志文件,以查看程序的运行方向和故障位置。这应该是一个相当简单的解决方法。这能回答你的问题吗@巴顿有点?我想,其中一个答案确实提到了根据答案使用
myCert.GetRSAPrivateKey()
,将一些调试消息写入日志文件,以查看程序的运行和故障。这应该是一个相当简单的解决方法。这能回答你的问题吗@巴顿有点?我想,其中一个答案确实提到根据答案使用
myCert.getrsaprovatekey()