クライアント側で復号化される情報の小さなチャンクの単純なサーバー側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を最後に呼び出すと、「OAEPパディングのデコード中にエラーが発生しました」というメッセージとともにCryptographicExceptionがスローされます。私はここで完全に明白な何かを見逃しているに違いありません。rsaインスタンスのセットアップを増やす必要がありますか、それとも最初のrsaシードインスタンスが必要ですか?