X509证书加密/解密

7
我刚开始学习XML安全。我们使用VS-2005和ASP.Net 2.0。我想将XML发送到外部URL并且需要加密。我正在按照MSDN文章ms229744ms229943所做的方式进行,但是在执行DecryptDocument()方法时,我一直收到“无法检索解密密钥”的错误。我正在使用我们的SSL网站证书,并且我目前使用X509Certificate对XML进行数字签名,它可以正常工作。
我还让其他人从不同的商店尝试了这个问题,他们也遇到了同样的错误。 X509解密方法有文档问题吗?在下面的测试代码中,我将XML发布到另一个试图解密XML的网页上。我不明白的是如果DecryptDocument()方法甚至不检查公钥是否嵌入,那么它如何工作?这是问题吗?如果是,我该如何检查以确保它嵌入XML中?感谢任何帮助。谢谢!
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

1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接