Исключение "плохой ключ" для сертификатов с экспортируемым закрытым ключом

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

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

Если я создаю сертификат без опции "-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;

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

1 ответ

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

Другие вопросы по тегам