我想使用RSA算法编写一个winform项目,以对一些信息进行加密并将其保存到数据库中,然后(带有一些ID,通过)将密文取回,进行解密以获取原始信息。
代码可以同时进行加密和解密,但是当我从数据库中获取密文并进行解密时会出错
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);
}
我尝试了许多不同的方法将密文转换回正确的格式,但仍然显示错误的错误数据。
对这个问题有什么想法吗?
谢谢。