Объект AsymmetricAlgorithm
, который вы получаете из свойства PrivateKey
вашего X509Certificate2
, фактически будет экземпляром одного из различных типов, полученных из AsymmetricAlgorithm
, таких как RSACryptoServiceProvider
, DSACryptoServiceProvider
и т. Д. ...
Вам нужно будет определить тип закрытого ключа, с которым вы имеете дело, и правильно его разыграть. После того, как вы разыграете, вы сможете позвонить ExportCspBlob(true)
, чтобы получить данные секретного ключа.
Пример (при условии использования ключа RSA):
public string GetRSAPrivateKeyBase64(X509Certificate2 certificate)
{
var privateKey = certificate.PrivateKey as RSACryptoServiceProvider;
if (privateKey == null) throw new Exception("Not an RSA private key");
// Export the CSP blob, including private key parameters
var cspBlob = privateKey.ExportCspBlob(true);
return Convert.ToBase64String(cspBlob);
}