我需要使用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