Мне нужно реализовать шифрование между приложением C # и микроконтроллером (pic32mx795). Проблема, с которой я столкнулся, заключается в создании пары открытого и закрытого ключей. Я использую RSACryptoServiceProvider, но я могу получить только ключевые атрибуты, а не полный открытый ключ.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSAParameters RSAKeyInfo = RSA.ExportParameters(false);
Я не могу предоставить микроконтроллеру ключевые параметры, так как он принимает только ключ (в байтах). Есть библиотека, которая сможет это сделать, но она будет доступна только в ноябре 2012 г. (SW300055). Я использую библиотеку SW300052 для шифрования микроконтроллера (размер ключа ограничен 256 битами).
Я также пробовал предложение bouncycastle в этой теме (создание ключей и отображение их в текстовом поле). Он сохраняет ключи в формате PEM. Насколько я понимаю, ключи сохраняются в формате base64. Я указал длину ключа 256 бит, но при преобразовании открытого ключа обратно в байты она составляет 62 байта.
byte[] encodedDataAsBytes = Convert.FromBase64String (publicKeyString);
Я также посмотрел на инструмент Microsoft Strong Name (sn.exe), но минимальный размер ключа, который он поддерживает, составляет 384 бита.
Есть ли способ сгенерировать пару открытых закрытых ключей и получить открытый ключ в виде обычного текста / байтов с помощью С # (или любого другого инструмента)? Может мне лучше использовать шифрование с симметричным ключом для шифрования сеансового ключа?