使用证书进行RSA反向加密

本文关键字:加密 RSA 证书 | 更新日期: 2023-09-27 18:10:45

我使用证书加密WCF和Android之间的通信。使用公钥加密,使用私钥解密工作正常。但是我从WCF应用程序返回一个会话ID到Android客户端。现在,我需要使用我的私钥加密SessionID,并在客户端使用公钥(反向)加密。这种反向加密和解密在Android测试中运行良好。但在我的c#测试中,解密显示错误"密钥不存在"。我试着把编码改为所有可能的,但没有希望。代码如下:

    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; 
    }

使用证书进行RSA反向加密

你的问题是,"现在,我需要加密 SessionID使用我的私钥和加密在客户端使用公钥(反向)"你是说用公钥解密吗?

你意识到如果你用私钥加密,任何人都可以解密看到证书的人,即任何拥有公钥的人?