2009-05-29 21 views
7

मैं बस XML सुरक्षा सीखना शुरू कर रहा हूं। हमारे पास वीएस -2005 & एएसपी.Net 2.0 है। मैं एक्सएमएल को बाहरी यूआरएल में भेजना चाहता हूं और इसे एन्क्रिप्ट किया जाना चाहिए। मैं ठीक से कर रहा हूं कि एमएसडीएन लेख ms229744 & ms229943 कर रहे हैं, लेकिन जब DecryptDocument() विधि करते हैं, तो मैं "डिक्रिप्शन कुंजी पुनर्प्राप्त करने में असमर्थ" प्राप्त करता रहता हूं। मैं अपने एसएसएल वेब सर्टिफिकेट का उपयोग कर रहा हूं, और मैं वर्तमान में XML पर डिजिटल हस्ताक्षर करने के लिए X509 प्रमाणपत्र का उपयोग करता हूं और यह ठीक काम करता है।X509 प्रमाण पत्र एन्क्रिप्शन/डिक्रिप्शन

मैंने किसी और से एक अलग दुकान से यह कोशिश करने के लिए भी कहा और उन्हें एक ही त्रुटि मिल रही है। X509 डिक्रिप्शन विधियों के साथ कोई दस्तावेजी समस्या है? नीचे दिए गए टेस्ट कोड में, मैं एक्सएमएल को किसी अन्य वेब पेज पर पोस्ट कर रहा हूं जो एक्सएमएल को डिक्रिप्ट करने का प्रयास कर रहा है। जो मुझे समझ में नहीं आता है यह है कि DecryptDocument() विधि कैसे काम कर सकती है अगर यह जांचने के लिए भी जांच नहीं करता कि सार्वजनिक कुंजी एम्बेडेड है या नहीं। क्या यह समस्या है? यदि हां, तो मैं यह सुनिश्चित करने के लिए कैसे जांच करूं कि यह एक्सएमएल में एम्बेडेड है? किसी भी मदद की सराहना की है। धन्यवाद!

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 

जेपी

उत्तर

0

संभावना है कि, अपने वेब प्रक्रिया निजी कुंजी का उपयोग नहीं कर सकते हैं। मैं एक बार एक ही बात में भाग गया, और इस मद में एक उत्तर पोस्ट किया:

Set read permission for certificate from command line

मामले में आप अभी भी मुद्दे हैं हमारे एन्क्रिप्शन दिनचर्या के लिए, हम http://msdn.microsoft.com/en-us/magazine/cc163454.aspx

संदर्भित
संबंधित मुद्दे