Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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