Я использую класс microsoft RSACryptoServiceProvider
для шифрования/расшифровки данных. Однако функция дешифрования генерирует исключение «Плохие данные». Это что-то о создании нового экземпляра класса провайдера каждый раз, когда я использую шифрование/дешифрование?C# Rsa Decryption throws исключение «Bad Data»
RSA Provider Класс
static public byte[] RSAEncrypt(byte[] byteEncrypt, RSAParameters RSAInfo, bool isOAEP)
{
try
{
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
RSA.ImportParameters(RSAInfo);
//Encrypt the passed byte array and specify OAEP padding.
return RSA.Encrypt(byteEncrypt, isOAEP);
}
}
catch (CryptographicException e)
{
Console.WriteLine(e.Message);
return null;
}
}
static public byte[] RSADecrypt(byte[] byteDecrypt, RSAParameters RSAInfo, bool isOAEP)
{
try
{
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(4096))
{
//Import the RSA Key information. This needs
//to include the private key information.
RSA.ImportParameters(RSAInfo);
//Decrypt the passed byte array and specify OAEP padding.
return RSA.Decrypt(byteDecrypt, isOAEP);
}
}
catch (CryptographicException e)
{
Console.WriteLine(e.ToString());
return null;
}
}
}
Использование
UnicodeEncoding ByteConverter = new UnicodeEncoding();
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(4096);
byte[] plainPassword;
byte[] encryptedPassword;
plainPassword = ByteConverter.GetBytes(connectionStringPasswordTextBox.Text);
encryptedPassword = CryptoHelper.RSAEncrypt(plainPassword, RSA.ExportParameters(false), false);
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(4096);
byte[] decryptedPassword = CryptoHelper.RSADecrypt(Convert.FromBase64String(connectionString.password), RSA.ExportParameters(true), false);
EDIT
Исключение было изменено на "неправильный параметр" после отказа несколько больше попробовать , Я думаю, что это связано с созданием только одного экземпляра для класса rsa для создания нового каждый раз, когда я его использую.
Вы проверили это: http://stackoverflow.com/questions/9659898/bad -data-CryptographicException? –
Да, я был так в отчаянии, что даже посмотрел 2-ю страницу Google. – Miral
Интересно, проблема связана с созданием нового набора ключей при создании второго RSACryptoServiceProvider. Однако упоминается «ключ по умолчанию» в MSDN (https://msdn.microsoft.com/en-us/library/zseyf239(v=vs.110).aspx), но нет документации о том, что это на самом деле означает. –