.NET Core 3.1 中的自签名 RSA 证书导出私钥参数异常 [Windows 10 Pro OS]

Self Signed RSA Certificate export private key parameters exception in .NET Core 3.1 [Windows 10 Pro OS]

我已经创建了一个自签名 RSA 证书并将私钥存储为 .pfx 文件。然后从我的 .Net Core 3.1 代码中,我试图用 .pfx 文件实例化 X509Certificate2 对象。 X509Certificate2 实例已成功创建,但代码 "certificate2.GetRSAPrivateKey().ExportParameters(true)" 出现异常 "The requested operation is not supported"。

X509Certificate2 certificate2 = new X509Certificate2(privateKeyData, _privateKeyPwd, X509KeyStorageFlags.Exportable);
RSAParameters rSAParameters = certificate2.GetRSAPrivateKey().ExportParameters(true);

异常: Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: 'The requested operation is not supported'.

你能帮帮我吗

编辑:rSAParameters 将用于解密加密的对称密钥。

rsaProvider.ImportParameters(rSAParameters);
byte[] encryptedSymmetricKey = Convert.FromBase64String(dataKey);
// Decrypt using OAEP padding.
byte[] decryptedSymmetricKey = rsaProvider.Decrypt(encryptedSymmetricKey, fOAEP: true);

当我看到类似 rsaKey.ExportParameters(true) 的内容时,在 99.999% 的情况下,这表明代码中有错误的 design/patern。

事实上,您不需要导出并重新导入参数,只需这样做即可:

X509Certificate2 certificate2 = new X509Certificate2(privateKeyData, _privateKeyPwd, X509KeyStorageFlags.Exportable);
RSA privateKey = certificate2.GetRSAPrivateKey();
// decrypt data
byte[] decryptedSymmetricKey = privateKey.Decrypt(encryptedSymmetricKey, RSAEncryptionPadding.OaepSHA1);