C#RSA加密/解密引发exception

我正在尝试设置一小块信息的简单服务器端RSA加密,这将在客户端解密。 就像概念certificate一样,我写了几行来确保可以从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种子实例?

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

现在,让我们回到RSACryptoServiceProvider类。 Encrypt方法仅使用公钥加密,而Decrypt方法仅使用私钥解密。