Я хочу написать проект winform, использующий алгоритм RSA для шифрования некоторой информации и сохранения его в базе данных, после чего (с некоторым идентификатором, pass) вернуть текст шифра, выполнить расшифровку для получения исходной информации.
Код прекрасно работает с шифрованием и дешифрованием одновременно, но выдается ошибка, когда я беру зашифрованный текст из базы данных и выполняю расшифровку
public static byte[] RSAEncrypt(byte[] plaintext, string destKey)
{
byte[] encryptedData;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(destKey);
encryptedData = rsa.Encrypt(plaintext, false);
rsa.Dispose();
return encryptedData;
}
public static byte[] RSADecrypt(byte[] ciphertext, string srcKey)
{
byte[] decryptedData;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(srcKey);
decryptedData = rsa.Decrypt(ciphertext, false); //error occur here
rsa.Dispose();
return decryptedData;
}
Код принимает зашифрованный текст (сохранение в базе данных) и выполняет расшифровку.
private void btdec_Click(object sender, EventArgs e)
{
string id = txtid.Text;
string des = txtdes.Text;
DataSet ds = new DataSet();
createConection();
string strfind = string.Format("select detail from tb_is where id = '{0}' and description = '{1}'", id, des);
SQLiteDataAdapter da = new SQLiteDataAdapter(strfind, _con);
da.Fill(ds);
closeConnection();
encryptedtext = Convert.FromBase64String(ObjectToString(ds.Tables[0].Rows[0].ItemArray[0]));
decryptedtex = RSADecrypt(encryptedtext, prikey);
txtdecrypt.Text = Convert.ToBase64String(decryptedtex);
}
Я пробовал много разных способов для преобразования текста шифра обратно в правильный формат, но он все еще показывает ошибку неверных данных.
Есть идеи по этой проблеме?
Спасибо.