带有RSA的SHA1在c#中使用私钥

时间:2014-02-14 21:29:02

标签: c# rsa sha1 digital-certificate

我试过这个

X509Certificate2 _MiCertificado = new X509Certificate2(@"C:\Users\Lefczuk\Downloads\KitPruebas SW\CSD Pruebas\aad990814bp7_1210261233s.cer", "12345678a",X509KeyStorageFlags.MachineKeySet);
RSACryptoServiceProvider RSA1 = (RSACryptoServiceProvider)_MiCertificado.PrivateKey;

SHA1 hasher = new SHA1CryptoServiceProvider();
UTF8Encoding e = new UTF8Encoding(true);
byte[] bytesFirmados = RSA1.SignData(e.GetBytes(this.obtenerCadenaOriginal()),hasher);
Convert.ToBase64String(bytesFirmados);

但它抛出NullReferenceException,RSA1对象为null。

有没有办法在不使用.psk或.p12文件或不编写OpenSSL命令的情况下解决此问题?

1 个答案:

答案 0 :(得分:2)

您正在加载的证书(.cer)文件不包含私钥,因此_MiCertificado.PrivateKey为空(这就是RSA1也为空的原因)。没有私钥,您无法对数据进行签名,因此您将不得不加载包含一个文件的文件(例如.p12)。