开发者

C# RSA encrypt/decrypt throws exception

I'm trying to set up a 开发者_开发技巧simple server side RSA encryption of a small chunk of info which is to be decrypted on the client side. Just as a proof of concept I wrote a few lines to ensure that the public and private key could be loaded from xml. However, I'm struggling to make even the most simple stuff work on my machine:

  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);

The last call to Decrypt throw a CryptographicException with the message "Error occurred while decoding OAEP padding.". I must be missing something totally obvious here. Do I need more setup of the rsa instances or maybe the initial rsa seeding instance?


You should use public key for encryption and private key for decryption. Take a look here: RSACryptoServiceProvider decrypt with public key

Now, let's get back to the RSACryptoServiceProvider class. The Encrypt method ONLY encrypts using the public key and the Decrypt method only decrypts using the private key.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜