我正在尝试为一小部分信息设置一个简单的服务器端 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 播种实例?