2010-01-10 4 views
13

Я пытаюсь зашифровать и затем расшифровать файлы с использованием асимметричного шифрования. Я создал тестовый сертификат с помощью makecert и установил его в свой собственный локальный магазин. В будущем мне придется установить этот сертификат на нескольких серверах, поэтому я создал его с флагом «-pe», то есть с помощью экспортируемого закрытого ключа. Сертификаты были успешно созданы и установлены, я вижу примечание «У вас есть закрытый ключ, соответствующий этому сертификату» в mmc.Исключение «плохой ключ» для сертификатов с открытым закрытым ключом

Теперь я пытаюсь зашифровать данные с помощью RSACryptoServiceProvider в .NET 3.5. И это удается. Но когда я пытаюсь расшифровать его, я получаю исключение «Bad key».

Если я создаю сертификат без опции -pe, тот же код хорошо подходит для дешифрования. Вот код:

RSA rsaKey = (RSA)myCertificate.PrivateKey; 
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)rsaKey; 
byte[] plainText = rsaCsp.Decrypt(encryptedText, true); 

Также я попробовал другой метод, с помощью System.Security.Cryptography.Pkcs имен:

EnvelopedCms envelope = new EnvelopedCms(); 
envelope.Decode(encryptedText); 
envelope.Decrypt(); 
byte[] plainText = envelope.ContentInfo.Content; 

Результат был тот же ... Может кто-нибудь помочь ?

ответ

21

Убедитесь, что ключ, который вы используете, был создан с помощью «-sky Exchange», если используется makecert.exe. Без этого вы можете использовать ключ для подписывания и аутентификации, а не шифрование/дешифрование, которое используется в данном случае.

+0

Спасибо, сэр, что мне не хватает – KodeKreachor

+1

Это спасло день .. спасибо за ответ И объяснение. – granadaCoder

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