使用证书的RSA反向加密

时间:2014-06-29 11:02:13

标签: c# encryption encoding rsa x509certificate

我正在使用证书来加密我在WCF和Android之间的通信。使用公钥加密,并使用私钥解密工作正常。但是我将会话ID从WCF应用程序返回到Android客户端。现在,我需要使用公钥(反向)在客户端使用我的私钥和加密来加密SessionID。这种反向加密和解密在Android测试中运行良好。但是在我的C#Test中,解密显示错误“Key not exists”。我尝试将编码更改为所有可能的编码,但没有希望。这是代码。

    private void Encrypt()
    {

        X509Certificate2 myCert2 = null;
        myCert2 = new X509Certificate2(Resource1.code, "code");
        RSACryptoServiceProvider RSA = (RSACryptoServiceProvider)myCert2.PrivateKey;

        string strtt = "This is a test"; 
        byte[] ascenc = Encoding.UTF32.GetBytes(strtt);
        encrbyte = RSA.Encrypt(ascenc, false);
        encrypted_string =Convert.ToBase64String(encrbyte);
        textBox2.Text = encrypted_string;


    }

    private void Decrypt()
    {

        var myCert2 = new X509Certificate2(Resource1.code, "code");
        RSACryptoServiceProvider RSA = (RSACryptoServiceProvider)myCert2.PublicKey.Key;
        byte[] ascby = Convert.FromBase64String(encrypted_string);
        byte[] decrypted_byte = RSA.Decrypt(ascby, false);
        string decrypted_text = Encoding.UTF32.GetString(decrypted_byte);
        textBox3.Text = decrypted_text; 

    }

1 个答案:

答案 0 :(得分:1)

您的问题是:“现在,我需要使用我的私钥加密使用我的私钥和加密在客户端使用公钥(反向)” - 你的意思是使用公钥解密

您是否意识到如果使用私钥加密,任何人可以解密已经看过证书的人,即任何拥有公钥的人?