Мой сервер создает RSACryptoServiceProvider и экспортирует его параметры в переменную (RSAKeyInfo).
Затем открытый ключ отправляется клиенту, и клиент что-то шифрует этим открытым ключом.
Теперь мне нужно иметь возможность дешифровать эти самые данные при отправке обратно на сервер, поэтому в моем случае полезен 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, я прочитал все эти страницы и до сих пор не могу заставить его работать.