Исключение "плохой ключ" для сертификатов с экспортируемым закрытым ключом
Я пытаюсь зашифровать, а затем расшифровать файлы с использованием асимметричного шифрования. Я создал тестовый сертификат с помощью 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. Без этого вы можете использовать ключ только для подписи и аутентификации, а не для шифрования / дешифрования, который вы используете здесь.