首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSA公钥加密

RSA公钥加密
EN

Stack Overflow用户
提问于 2011-05-01 04:10:56
回答 1查看 13K关注 0票数 0

大家好,我正在构建客户机/服务器会议系统

我遇到了一个问题:“不能隐式地将'string‘类型转换为'System.Security.Cryptography.RSAParameters'”

我会很快解释这个过程

  • 客户端连接服务器
  • 服务器将他的公钥发回
  • 客户端将通过服务器公钥加密username+his公钥

我收到了服务器回复(公钥),但当我试图使用RSA加密时,出现了上述错误

这是我的守则:

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-01 05:15:27

首先,ImportParameters()不接受字符串。它期待的是RSAParameters类型的东西。并且它不能隐式地将字符串转换为RSAParameter对象,这就是显示错误的原因。

我相信你还没有从根本上理解RSA的工作原理。还是技术上的?阅读示例在这里提供,从技术上理解它。

您应该寻找的是如何正确地从服务器导出公钥,并使用相同的公钥加密客户端中的某些内容。

正如您所猜到的,ExportParametersImportParameters看起来很有前途。但是我在发送短信时遇到了困难(在我的项目中)。所以我用的是ExportCspBlobImportCspBlob。请确保将false指定为ExportCspBlob,以便不包括私钥信息。

要将其作为字符串发送,我必须做的是对从base64返回的字节数组进行base64编码。若要执行转换,请使用“转换”类。您专门寻找的方法是ToBase64StringFromBase64String

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5846372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档