Я пытаюсь зашифровать, а затем расшифровать файлы с использованием асимметричного шифрования. Я создал тестовый сертификат с помощью 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;
Результат был таким же ...
Кто-нибудь может помочь?