2014-02-14 5 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 является недействительным.

Есть ли способ решить эту проблему без использования файлов .psk или .p12 или без написания команд OpenSSL?

ответ

2

Файлы сертификата (.cer), такие как тот, который вы загружаете, не содержат закрытых ключей, следовательно _MiCertificado.PrivateKey является null (поэтому RSA1 также является нулевым). Вы не можете подписывать данные без закрытого ключа, поэтому вам придется загрузить файл, содержащий один (например, .p12).

 Смежные вопросы

  • Нет связанных вопросов^_^