2009-05-29 23 views
7

Sadece XML güvenliğini öğrenmeye başlıyorum. VS-2005 & ASP.Net 2.0 var. XML'i dış bir URL'ye göndermek istiyorum ve şifrelenmesi gerekiyor. MSDN makaleleri tam olarak ne yapıyor yapıyorum ms229744 & ms229943 yapıyor, ancak DecryptDocument() yöntemini yaparken, "Şifre çözme anahtarı alınamıyor." SSL web sertifikamı kullanıyorum ve şu anda XML'i dijital olarak imzalamak için X509Certificate kullanıyor ve iyi çalışıyor.X509Bakım şifreleme/şifre çözme

Ayrıca başka bir dükkandan bunu denemelerini ve aynı hatayı almasını istedim. X509 şifre çözme yöntemleri ile belgelenmiş bir sorun var mı? Aşağıdaki test kodunda, XML'i XML'in şifresini çözmeye çalışan başka bir web sayfasına gönderiyorum. Anlamadığım şey, Açık anahtarın gömülü olup olmadığını denetlemezse DecryptDocument() yönteminin nasıl çalışabileceğidir. Bu sorun mu? Eğer öyleyse, XML'de gömülü olduğundan emin olmak için nasıl kontrol ederim? Herhangi bir yardım takdir edilir. Teşekkürler!

Private Function EncryptXml(ByVal xmlDoc As XmlDocument, ByVal Cert As X509Certificates.X509Certificate2) As XmlDocument 

    Dim dataNodes As XmlNodeList = xmlDoc.SelectNodes("Agency") 
    If dataNodes.Count <> 1 Then 
     Return Nothing 
    End If 
    Dim elementToEncrypt As XmlElement = CType(xmlDoc.GetElementsByTagName("Agency")(0), XmlElement) 
    Dim eXml As New EncryptedXml() 
    Dim Key As RSACryptoServiceProvider = CType(Cert.PrivateKey, RSACryptoServiceProvider) 
    Dim edElement As EncryptedData = eXml.Encrypt(elementToEncrypt, Cert) 
    EncryptedXml.ReplaceElement(elementToEncrypt, edElement, False) 
    Return xmlDoc 
End Function 



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
If Not IsPostBack Then 
    If Request.Form("hdnSignedXML") IsNot Nothing Then 
    Dim strXML As String = Request.Form("hdnSignedXML") 
    Dim xmlDoc As New XmlDocument 
    xmlDoc.LoadXml(strXML) 
    xmlDoc.PreserveWhitespace = True 
    Response.ContentType = "text/plain" 
    Response.Write(strXML) 

    Dim exml As New Xml.EncryptedXml(xmlDoc) 
    exml.DecryptDocument() 
    xmlDoc.Save("C:/inetpub/TestExampleDecrypted.xml") 


    Response.End() 

End If 

End Sub 

JP

cevap