一部のテキストを RSA で暗号化し、後で秘密鍵を使用して復元する必要があります。私の問題はRSACryptoServiceProvider.Encrypt()
、同じキーを使用している場合でも、毎回異なる値を出力することです。テストのためにLINQpadに入れたコードは次のとおりです。
CspParameters cp = new CspParameters();
cp.KeyContainerName = "MyKey";
cp.Flags = CspProviderFlags.UseMachineKeyStore | CspProviderFlags.UseExistingKey;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
// using LINQpad to verify the key is loaded properly -- same every time
rsa.ToXmlString(true).Dump();
byte[] rgb = new ASCIIEncoding().GetBytes("Hello world");
byte[] xx = rsa.Encrypt(rgb, false);
string b64 = Convert.ToBase64String(xx);
// this changes every time:
b64.Dump();
クラスは出力に影響を与えるためにキーだけでなく何か他のものを使用しているに違いないと推測していますが、何を見つけるのに苦労しています。