System.Security.Cryptograph.RSACryptoServiceProvider kullanarak karşılaştığım bir sorunu yalıtan aşağıdaki sınama sahibim. Sorun şu ki, r.Decrypt istisna atıyor "Anahtar mevcut değil". Hem şifreleme hem de şifre çözme için privateKeyXml kullanırsam (şifresini çözerken publicKeyXml kullanmak yerine) beklendiği gibi çalışır. Tabii ki özel anahtarı paylaşmak istemiyorum, ortak anahtarla şifresini çözmem gerekiyor. Burada yanlış yaptığım şeyi gören var mı?"Anahtar mevcut değil" istisnası atıldı. Neyi yanlış yapıyorum?
[Fact]
public void BasicEncryptDecrypt()
{
var cspParameters = new CspParameters() { Flags = CspProviderFlags.CreateEphemeralKey | CspProviderFlags.NoPrompt };
string privateKeyXml = null;
string publicKeyXml = null;
using(var r = new RSACryptoServiceProvider(2048, cspParameters)){
r.PersistKeyInCsp = false;
privateKeyXml = r.ToXmlString(true);
publicKeyXml = r.ToXmlString(false);
}
byte[] encrypted = null;
string decrypted = null;
using (var r = new RSACryptoServiceProvider(2048, cspParameters))
{
r.FromXmlString(privateKeyXml);
encrypted = r.Encrypt(Encoding.UTF8.GetBytes("foobar"), false);
}
using (var r = new RSACryptoServiceProvider(2048, cspParameters))
{
r.FromXmlString(publicKeyXml);
decrypted = Encoding.UTF8.GetString(r.Decrypt(encrypted, false));
}
Assert.Equal("foobar", decrypted);
}
olası yinelenen [RSACryptoServiceProvider kullanarak şifrelenmiş bir metin şifresi nasıl?] (Http://stackoverflow.com/questions/6763741/how - şifreli-şifreli-metin-kullanarak-rsacryptoserviceprovider) –
Asimetrik şifrelemenin nasıl çalıştığını unutmayın: her zaman ortak anahtarla şifreleyin ve özel anahtarla şifresini çözün. –
evet, bu bir dupe. teşekkürler –