我需要用 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();
我猜测该类必须使用其他东西以及影响输出的关键,但我正在努力找出是什么。