我的服务器创建一个 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);
我究竟做错了什么?我怎样才能正确地做到这一点?谢谢 :)
PS:请不要发送 MSDN 或明显的 Google 结果链接,我已经阅读了所有这些页面,但仍然无法正常工作。