C# 在.NET核心C中使用证书进行加密和解密#
使用C#,我希望能够使用证书对数据进行解密。但是在.NETCore(3.1)中,我无法使用证书进行解密。有趣的是,它在.NETFramework(4.8)中运行良好。在.NET Core中,我可以找到并查看证书,但当我尝试将其强制转换为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
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()