“Плохое ключевое” исключение для сертификатов с экспортным закрытым ключом

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

Теперь я пытаюсь зашифровать данные с RSACryptoServiceProvider в.NET 3.5. И это успешно выполняется. Но когда я пытаюсь дешифровать его, я получаю "Плохое ключевое" исключение.

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

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

Также я попробовал другой метод, с помощью Системы. Безопасность. Криптография. Пространство имен Pkcs:

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

Результатом было то же... Кто-либо может помочь?

14
задан Dmitry Perets 10 January 2010 в 13:08
поделиться