c# – System.IO.IOException:—– END RSA PRIVATE KEY未找到
发布时间:2020-12-15 08:14:49 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 PHP为服务器和客户端的C#表单应用程序创建一个在线数据库应用程序. 在服务器上,我使用带有PHPSecLib的公共RSA密钥加密一个简单的字符串.然后C#应用程序接收该字符串并尝试使用相应的私钥解密它. 字节在服务器上进行base64编码,并通过C#再次解
我正在尝试使用
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,bytesToDecrypt.Length); string decryptedString = Convert.ToBase64String(decryptedBytes); return decryptedString; } 但是,我在上面指定的行上得到以下错误^.
我相信密钥对组合没有任何问题,因为在我尝试解密任何东西之前我得到了一个错误. string privateKey = "-----BEGIN RSA PRIVATE KEY-----XXXXXXXX-----END RSA PRIVATE KEY-----"; 所以在我看来,页脚实际上包含在字符串中……我已调试并用谷歌搜索,但我似乎无法解决它.我对RSA和Bouncycastle很新,所以也许我只是使用了错误的方法. 希望你能帮忙,谢谢! 附:这是我的第一个Stackoverflow问题,我刚刚创建了一个帐户,所以如果你也可以给我一些关于我提出这个问题的方式的反馈;大! 解决方法
您需要在前/后封装边界文本和Base64数据之间添加一个新行,因此:
string privateKey = "-----BEGIN RSA PRIVATE KEY-----rnXXXrn-----END RSA PRIVATE KEY-----"; 这是因为pem规范允许在两者之间存在其他文本标题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |