如何解决RSA解密中的错误“'System.Security.Cryptography.CryptographicException'错误数据”

时间:2019-04-19 17:40:58

标签: database winforms encryption rsa

我想使用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);           
    }

我尝试了许多不同的方法将密文转换回正确的格式,但仍然显示错误的错误数据。

对这个问题有什么想法吗?

谢谢。

0 个答案:

没有答案