RSA шифрование с открытым ключом - PullRequest
0 голосов
/ 01 мая 2011

Привет каждому телу Я строю систему клиент-серверных встреч

У меня возникла проблема "Не удается неявно преобразовать тип 'string' в 'System.Security.Cryptography.RSAParameters'"

Я объясню процесс быстро

  • Клиент подключается к серверу
  • сервер отправляет обратно свой открытый ключ
  • Клиент зашифрует имя пользователя + его открытый ключ. Открытым ключом сервера.

Я получил ответ от Сервера (открытый ключ), но когда я попытался зашифровать с использованием RSA, появилась ошибка выше

Это мой код:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

// mess is Server response as string
RSAParameters publickey = mess;

rsa.ImportParameters(publickey);

byte[] encryptedData = rsa.Encrypt(StringToByte(uname.Text + "|||" + PUBKEY), true);

1 Ответ

3 голосов
/ 01 мая 2011

Прежде всего, ImportParameters () не принимает строку.Он ожидает что-то типа RSAParameters.И он не может неявно преобразовать строку в объект RSAParameter, и именно поэтому отображается ошибка.

Я полагаю, вы не поняли, как работает RSA.Или это технический?Прочитайте примеры , приведенные здесь , чтобы понять это технически.

То, что вы должны искать, - это как правильно экспортировать открытый ключ с сервера и использовать тот же открытый ключ для шифрования чего-либо на стороне клиента.

Как вы уже догадались, ExportParameters и ImportParameters выглядит многообещающе.Однако у меня были проблемы с отправкой через SMS (в моем проекте).Так что я использовал ExportCspBlob и ImportCspBlob .Убедитесь, что вы указали false для ExportCspBlob, чтобы не включать информацию о секретном ключе.

Чтобы отправить его в виде строки, мне нужно было выполнить base64-кодирование массива байтов, который был возвращен из ExportCspBlob.Чтобы сделать преобразование, используйте класс Convert.Методы, которые вы особенно ищете, это ToBase64String и FromBase64String

...