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



>我创建了一个自签名的RSA证书,并将私钥存储为.pfx文件。然后,从我的 .Net Core 3.1 代码中,我尝试使用 .pfx 文件实例化 X509Certificate2 对象。X509Certificate2 实例已成功创建,但代码为"certificate2.GetRSAPrivateKey((.导出参数(true("得到异常,因为"不支持请求的操作"。

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

例外: Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException:"不支持请求的操作"。

你能帮帮我吗?

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

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

当我看到类似rsaKey.ExportParameters(true)的东西时,在 99.999% 的情况下,这表明代码中的设计/父亲很糟糕。

实际上,您不需要导出和重新导入参数,只需执行:

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

最新更新