C#RSA加密/解密引发异常

时间:2009-10-27 10:42:24

标签: c# rsacryptoserviceprovider

我正在尝试设置一小块信息的简单服务器端RSA加密,这些信息将在客户端进行解密。就像概念证明一样,我写了几行来确保可以从xml加载公钥和私钥。但是,我正在努力使最简单的东西在我的机器上工作:

  byte[] bytes = Encoding.UTF8.GetBytes("Some text");
  bool fOAEP = true;

  // seeding a public and private key
  RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  var publicKey = rsa.ToXmlString(false);
  var privateKey = rsa.ToXmlString(true);

  //server side
  RSACryptoServiceProvider rsaServer = new RSACryptoServiceProvider();
  rsaServer.FromXmlString(privateKey);
  var encrypted = rsaServer.Encrypt(bytes, fOAEP);

  //client side
  RSACryptoServiceProvider rsaClient = new RSACryptoServiceProvider();
  rsaClient.FromXmlString(publicKey);
  var decrypted = rsaClient.Decrypt(encrypted, fOAEP);

最后一次调用Decrypt会抛出一个CryptographicException,并显示消息“解码OAEP填充时出错”。我必须在这里遗漏一些完全明显的东西。我是否需要更多rsa实例的设置或初始的rsa种子实例?

1 个答案:

答案 0 :(得分:5)

您应该使用公钥进行加密,使用私钥进行解密。 看看这里:RSACryptoServiceProvider decrypt with public key

  

现在,让我们回到原点   RSACryptoServiceProvider类。该   加密方法仅使用加密   公钥和Decrypt方法   只使用私钥解密。