2010-01-10 18 views
13

Asimetrik şifrelemeyi kullanarak dosyaları şifrelemeye ve sonra şifrelemeye çalışıyorum. Makecert kullanarak bir test sertifikası oluşturdum ve kişisel yerel makinemdeki mağazaya kurdum. Gelecekte bu sertifikayı birkaç sunucuya yüklemem gerekecek, bu yüzden bunu "-pe" bayrağıyla oluşturdum, yani ihraç edilebilir özel anahtarla. Sertifikalar başarıyla oluşturuldu ve yüklendi, "Bu sertifikaya karşılık gelen özel bir anahtarınız var" notu mmc olarak görüyorum.Dışa aktarılabilir özel anahtar içeren sertifikalar için "Hatalı anahtar" istisnası

Şimdi verileri .NET 3.5'deki RSACryptoServiceProvider ile şifrelemeye çalışıyorum. Ve başarılı olur. Ama şifresini çözmeyi denediğimde, "Kötü anahtar" istisnası alıyorum.

"-pe" seçeneği olmayan bir sertifika oluşturursam, aynı kod şifre çözme için iyi çalışır.

EnvelopedCms envelope = new EnvelopedCms(); 
envelope.Decode(encryptedText); 
envelope.Decrypt(); 
byte[] plainText = envelope.ContentInfo.Content; 

sonuç ... Herkes aynı yardımcı olabilir edildi: Ayrıca ben System.Security.Cryptography.Pkcs ad kullanarak, başka bir yöntemi denedim

RSA rsaKey = (RSA)myCertificate.PrivateKey; 
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)rsaKey; 
byte[] plainText = rsaCsp.Decrypt(encryptedText, true); 

: İşte kodudur ?

cevap

21

Makecert.exe kullanılıyorsa, kullandığınız anahtarın "-sky Exchange" ile oluşturulduğundan emin olun. Bu olmadan, yalnızca burada uygulamakta olduğunuz kullanım şekli olan şifreleme/şifre çözme değil, imzalama ve kimlik doğrulama için kullanabilirsiniz.

+0

Teşekkür ederim bayım, tam olarak neyim eksik – KodeKreachor

+1

Bu gününü kurtardı .. Teşekkürler cevap ve açıklama için teşekkürler. – granadaCoder

İlgili konular