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()の2番目のパラメータでパディングタイプを混在させると思います。 – gordonmleigh