2014-02-14 74 views
2

私鑰我已經試過這SHA1與RSA使用C#

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命令?

回答

2

證書(.cer)文件(如您正在加載的文件)不包含私鑰,因此_MiCertificado.PrivateKey爲空(這也是爲什麼RSA1也爲空)。你不能在沒有私鑰的情況下籤署數據,所以你將不得不加載一個包含一個文件的文件(比如.p12)。