Создание пар открытого и закрытого ключей в c # и сохранение открытого ключа в виде простого текста

Мне нужно реализовать шифрование между приложением 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 бита.

Есть ли способ сгенерировать пару открытых закрытых ключей и получить открытый ключ в виде обычного текста / байтов с помощью С # (или любого другого инструмента)? Может мне лучше использовать шифрование с симметричным ключом для шифрования сеансового ключа?


person user1669897    schedule 13.09.2012    source источник


Ответы (1)


Вы можете настроить сервер сертификатов. в окне Windows и запросите их напрямую. Вам нужно будет установить службы сертификации MS. Вы также можете использовать makecert и получить доступ к ключу с помощью c #.

Или вы можете сгенерировать пару ключей программно.

person indra    schedule 13.09.2012