大家好,我正在构建客户机/服务器会议系统
我遇到了一个问题:“不能隐式地将'string‘类型转换为'System.Security.Cryptography.RSAParameters'”
我会很快解释这个过程
我收到了服务器回复(公钥),但当我试图使用RSA加密时,出现了上述错误
这是我的守则:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
// mess is Server response as string
RSAParameters publickey = mess;
rsa.ImportParameters(publickey);
byte[] encryptedData = rsa.Encrypt(StringToByte(uname.Text + "|||" + PUBKEY), true);发布于 2011-05-01 05:15:27
首先,ImportParameters()不接受字符串。它期待的是RSAParameters类型的东西。并且它不能隐式地将字符串转换为RSAParameter对象,这就是显示错误的原因。
我相信你还没有从根本上理解RSA的工作原理。还是技术上的?阅读示例在这里提供,从技术上理解它。
您应该寻找的是如何正确地从服务器导出公钥,并使用相同的公钥加密客户端中的某些内容。
正如您所猜到的,ExportParameters和ImportParameters看起来很有前途。但是我在发送短信时遇到了困难(在我的项目中)。所以我用的是ExportCspBlob和ImportCspBlob。请确保将false指定为ExportCspBlob,以便不包括私钥信息。
要将其作为字符串发送,我必须做的是对从base64返回的字节数组进行base64编码。若要执行转换,请使用“转换”类。您专门寻找的方法是ToBase64String和FromBase64String。
https://stackoverflow.com/questions/5846372
复制相似问题