Как решить ошибку "'System.Security.Cryptography.CryptographicException' Bad Data" в дешифровании RSA - PullRequest
1 голос
/ 19 апреля 2019

Я хочу написать проект 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);           
    }

Я пробовал много разных способов для преобразования текста шифра обратно в правильный формат, но он все еще показывает ошибку неверных данных.

Есть идеи по этой проблеме?

Спасибо.

...