Во-первых, я написал приведенный ниже код только в академических целях. Причина, по которой я говорю это, заключается в том, что я не помещаю это в производственную среду и поэтому «обхожу» некоторые накладные расходы, которые мне пришлось бы делать, если бы я был, мне просто нужно иметь возможность шифровать/дешифровать строку, используя код ниже. Мне удавалось сделать это несколько раз, но по какой-то причине я начал получать «Неверные данные CryptographicException» и не уверен, что может быть причиной проблемы.
private string RSAEncrypt(string value)
{
byte[] encryptedData = Encoding.Unicode.GetBytes(value);
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = _rsaContainerName;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048,cspParams))
{
encryptedData = RSA.Encrypt(encryptedData, false);
return Convert.ToBase64String(encryptedData);
}
}
private string RSADecrypt(string value)
{
byte[] encryptedData = Encoding.Unicode.GetBytes(value);
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = _rsaContainerName;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048,cspParams))
{
encryptedData = RSA.Decrypt(encryptedData,false);
return Convert.ToBase64String(encryptedData);
}
}
Это исключение генерируется только при вызове RSADecrypt.
Есть идеи? Я где-то читал, что это может быть связано с ожидаемым размером зашифрованных данных, которые передаются в RSA.Decrypt.
Спасибо }