【发布时间】:2020-06-06 15:50:39
【问题描述】:
在 .NET Core (3.1) 上,在 Windows 和 Linux 平台上,我想使用 X509Certificiate2 实例的私钥解密消息。证书分别从 Windows 平台的证书存储和 Linux 平台的 PFX 文件中检索。
我希望使用以下内容解密消息:
static byte[] Decrypt(byte[] data, RSAParameters privateKey)
{
using (var rsa = RSA.Create())
{
rsa.ImportParameters(privateKey);
return rsa.Decrypt(data, RSAEncryptionPadding.OaepSHA256);
}
}
但是当我尝试提取私钥时,出现异常:“System.Security.Cryptography.CryptographicException:不支持请求的操作。”
var privateKey = x509cert.GetRSAPrivateKey();
var privateKeyParams = privateKey.ExportParameters(true); // <-- throws CryptographicException
我错过了什么?
【问题讨论】:
-
您是仅在 Windows 上还是在两者上都出现异常?
-
这个错误至少出现在windows平台上。即将在 Linux 上进行测试。
-
Linux 上也有该错误。 @Crypt32 修复了它。
标签: c# rsa x509certificate2 cng