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