我需要使用RSA加密某些文本,然后使用私钥恢复它。我的问题是,RSACryptoServiceProvider.Encrypt()
每次输出一个不同的值,即使使用相同的密钥。这里是我的代码,我投入LINQpad测试:RSACryptoServiceProvider不会产生一致的输出
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();
我猜这个类必须使用别的东西,以及关键影响输出,但我在努力寻找什么。
当你对数据进行解密,你每次都得到相同的结果? – robert
嗯,我以为我没有。这就是为什么我把它全部回来看看加密文本,看看它是一样的。但是在我更新我的答案之前,我无法重现问题 - 我想我在第二个参数Encrypt()中混合了填充类型。 – gordonmleigh