Мой сервер создает RSACryptoServiceProvider и экспортирует его параметры в переменную (RSAKeyInfo).Как дешифровать данные RSA в C# .NET соответственно?
Затем открытый ключ отправляется клиенту, а клиент шифрует что-то с этим открытым ключом.
Теперь мне нужно иметь возможность расшифровать эти данные при отправке обратно на сервер - следовательно, RSA полезен в моем случае.
Однако при попытке воссоздать RSACryptoServiceProvider с импортированными параметрами из первого созданного ранее RSACryptoServiceProvider я получаю исключение «Плохие данные».
... Код может быть яснее.
Создание криптографии:
class Cryptograph
{
public Cryptograph()
{
this.RSAKeyInfo = new RSACryptoServiceProvider(2048, new CspParameters(1)).ExportParameters(true);
}
}
Доступ позже для расшифровки:
byte[] encrypted = ...;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(this.Cryptograph.RSAKeyInfo);
byte[] decrypted = rsa.Decrypt(encrypted, false);
Console.WriteLine(Utilities.ByteArrayToHexString(decrypted));
я получаю исключение "Bad Data" на этой линии:
byte[] decrypted = rsa.Decrypt(encrypted, false);
Что же я делать не так? Как я могу сделать это правильно? Спасибо :)
P.S .: Пожалуйста, не отправляйте MSDN или очевидные ссылки на результаты Google, я прочитал все эти страницы и до сих пор не могу заставить его работать.
Является ли клиент также .net-клиентом? Используют ли они ту же версию .net? –