Tôi chỉ mới bắt đầu tìm hiểu về bảo mật XML. Chúng tôi có VS-2005 & ASP.Net 2.0. Tôi muốn gửi XML đến một URL bên ngoài và nó cần phải được mã hóa. Tôi đang làm chính xác những gì các bài viết MSDN ms229744 & ms229943 đang làm, nhưng khi thực hiện phương thức DecryptDocument(), tôi tiếp tục nhận được "Không thể truy xuất khóa giải mã." Tôi đang sử dụng chứng chỉ web SSL của chúng tôi và hiện tại tôi đang sử dụng X509Certificate để ký kỹ thuật số XML và nó hoạt động tốt.X509Xóa mã hóa/giải mã chứng nhận
Tôi cũng đã yêu cầu người khác thử cái này từ một cửa hàng khác và họ cũng gặp lỗi tương tự. Có một vấn đề với các phương pháp giải mã X509 không? Trong mã thử nghiệm dưới đây, tôi đăng XML lên một trang web khác đang cố gắng giải mã XML. Những gì tôi không hiểu là phương thức DecryptDocument() có thể hoạt động như thế nào nếu nó thậm chí không kiểm tra xem khóa công khai có được nhúng hay không. Đây có phải là vấn đề không? Nếu vậy, làm cách nào để kiểm tra để đảm bảo nó được nhúng trong XML? Bất kỳ trợ giúp được đánh giá cao. Cảm ơn!
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