小编G4A*_*G4A的帖子

System.IO.IOException:----- END RSA PRIVATE KEY未找到

我正在尝试使用PHP为服务器和客户端的C#表单应用程序创建一个在线数据库应用程序.在服务器上,我使用带有PHPSecLib的公共RSA密钥加密一个简单的字符串.然后C#应用程序接收该字符串并尝试使用相应的私钥解密它.字节在服务器上进行base64编码,并通过C#再次解码为字节.我使用PHPSecLib创建了密钥对.

这是我在客户端应用程序上使用的代码:

public string rsa_decrypt(string encryptedText, string privateKey) {
        byte[] bytesToDecrypt = Convert.FromBase64String(encryptedText);
        Pkcs1Encoding decrypter = new Pkcs1Encoding(new RsaEngine());
        //the error occurs on this line:
        AsymmetricCipherKeyPair RSAParams = (AsymmetricCipherKeyPair)new PemReader(new StringReader(privateKey)).ReadObject();

        decrypter.Init(false, RSAParams.Private);
        byte[] decryptedBytes = decrypter.ProcessBlock(bytesToDecrypt, 0, bytesToDecrypt.Length);
        string decryptedString = Convert.ToBase64String(decryptedBytes);
        return decryptedString;
    }
Run Code Online (Sandbox Code Playgroud)

但是,我在上面指定的行上得到以下错误^.

BouncyCastle.Crypto.dll中发生未处理的"System.IO.IOException"类型异常

附加信息:----- END RSA PRIVATE KEY未找到

我相信密钥对组合没有任何问题,因为在我尝试解密任何东西之前我得到了一个错误.该privateKey参数目前使用以下格式硬编码到脚本中:

string privateKey = "-----BEGIN RSA PRIVATE KEY-----XXXXXXXX-----END RSA PRIVATE KEY-----";
Run Code Online (Sandbox Code Playgroud)

所以在我看来,页脚实际上包含在字符串中......我已调试并用谷歌搜索,但我似乎无法解决它.我对RSA和Bouncycastle很新,所以也许我只是使用了错误的方法.

希望你能帮忙,谢谢! - G4A

PS这是我的第一个Stackoverflow问题,我刚刚创建了一个帐户,所以如果你也可以给我一些关于我提出这个问题的方式的反馈意见; 大!

c# encryption cryptography rsa bouncycastle

9
推荐指数
2
解决办法
3986
查看次数

标签 统计

bouncycastle ×1

c# ×1

cryptography ×1

encryption ×1

rsa ×1