【发布时间】:2010-11-23 22:40:39
【问题描述】:
我的服务器创建一个 RSACryptoServiceProvider 并将其参数导出到一个变量 (RSAKeyInfo)。
然后,公钥被发送给客户端,客户端使用该公钥加密某些内容。
现在,我需要能够在将这些数据发送回服务器时对其进行解密 - 因此 RSA 在我的情况下很有用。
但是,在尝试使用从之前创建的第一个 RSACryptoServiceProvider 导入的参数重新创建 RSACryptoServiceProvider 时,我得到了“错误数据”异常。
...代码可能更清晰。
创建加密货币:
class Cryptograph
{
public Cryptograph()
{
this.RSAKeyInfo = new RSACryptoServiceProvider(2048, new CspParameters(1)).ExportParameters(true);
}
}
稍后访问它进行解密:
byte[] encrypted = ...;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(this.Cryptograph.RSAKeyInfo);
byte[] decrypted = rsa.Decrypt(encrypted, false);
Console.WriteLine(Utilities.ByteArrayToHexString(decrypted));
我在这一行得到“错误数据”异常:
byte[] decrypted = rsa.Decrypt(encrypted, false);
我做错了什么?我怎样才能正确地做到这一点? 谢谢你:)
P.S.:请不要发送 MSDN 或明显的 Google 结果链接,我已经阅读了所有这些页面,但仍然无法正常工作。
【问题讨论】:
-
客户端也是.net客户端吗?他们使用相同版本的 .net 吗?
标签: c# .net key rsa encryption