Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Třídy v System.Security.Cryptography.Xml oboru názvů můžete použít k šifrování a dešifrování elementu v dokumentu XML. Šifrování XML je standardní způsob výměny nebo ukládání šifrovaných dat XML, aniž byste se museli starat o snadno čitelná data. Další informace o standardu šifrování XML naleznete ve specifikaci W3C (World Wide Web Consortium) pro šifrování XML umístěné na adrese https://www.w3.org/TR/xmldsig-core/.
Tento příklad dešifruje element XML, který byl zašifrován pomocí metod popsaných v tématu: Postupy: Šifrování elementů XML pomocí certifikátů X.509. Najde <EncryptedData
> prvek, dešifruje element a pak nahradí element původním elementem XML ve formátu prostého textu.
Příklad kódu v tomto postupu dešifruje element XML pomocí certifikátu X.509 z místního úložiště certifikátů aktuálního uživatelského účtu. Příklad používá metodu DecryptDocument k automatickému načtení certifikátu X.509 a dešifrování klíče relace uloženéhoEncryptedKey
<> v prvku <EncryptedData
> prvku. Metoda DecryptDocument pak automaticky použije klíč relace k dešifrování elementu XML.
Tento příklad je vhodný pro situace, kdy více aplikací potřebuje sdílet šifrovaná data nebo kde aplikace potřebuje uložit šifrovaná data mezi časy spuštění.
Dešifrování elementu XML pomocí certifikátu X.509
Vytvořte XmlDocument objekt načtením souboru XML z disku. Objekt XmlDocument obsahuje element XML k dešifrování.
XmlDocument xmlDoc = new XmlDocument();
Dim xmlDoc As New XmlDocument()
Vytvořte nový EncryptedXml objekt předáním XmlDocument objektu konstruktoru.
EncryptedXml exml = new EncryptedXml(Doc);
Dim exml As New EncryptedXml(Doc)
Dešifrujte dokument XML pomocí DecryptDocument metody.
exml.DecryptDocument();
exml.DecryptDocument()
XmlDocument Uložte objekt.
xmlDoc.Save("test.xml");
xmlDoc.Save("test.xml")
Příklad
Tento příklad předpokládá, že soubor s názvem "test.xml"
existuje ve stejném adresáři jako zkompilovaný program. Předpokládá se také, že "test.xml"
obsahuje "creditcard"
prvek. Následující kód XML můžete umístit do souboru volaný test.xml
a použít ho v tomto příkladu.
<root>
<creditcard>
<number>19834209</number>
<expiry>02/02/2002</expiry>
</creditcard>
</root>
using System;
using System.Xml;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;
using System.Security.Cryptography.X509Certificates;
class Program
{
static void Main(string[] args)
{
try
{
// Create an XmlDocument object.
XmlDocument xmlDoc = new XmlDocument();
// Load an XML file into the XmlDocument object.
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load("test.xml");
// Decrypt the document.
Decrypt(xmlDoc);
// Save the XML document.
xmlDoc.Save("test.xml");
// Display the decrypted XML to the console.
Console.WriteLine("Decrypted XML:");
Console.WriteLine();
Console.WriteLine(xmlDoc.OuterXml);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
public static void Decrypt(XmlDocument Doc)
{
// Check the arguments.
if (Doc == null)
throw new ArgumentNullException("Doc");
// Create a new EncryptedXml object.
EncryptedXml exml = new EncryptedXml(Doc);
// Decrypt the XML document.
exml.DecryptDocument();
}
}
Imports System.Xml
Imports System.Security.Cryptography
Imports System.Security.Cryptography.Xml
Imports System.Security.Cryptography.X509Certificates
Module Program
Sub Main(ByVal args() As String)
Try
' Create an XmlDocument object.
Dim xmlDoc As New XmlDocument()
' Load an XML file into the XmlDocument object.
xmlDoc.PreserveWhitespace = True
xmlDoc.Load("test.xml")
' Decrypt the document.
Decrypt(xmlDoc)
' Save the XML document.
xmlDoc.Save("test.xml")
' Display the decrypted XML to the console.
Console.WriteLine("Decrypted XML:")
Console.WriteLine()
Console.WriteLine(xmlDoc.OuterXml)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
Sub Decrypt(ByVal Doc As XmlDocument)
' Check the arguments.
ArgumentNullException.ThrowIfNull(Doc)
' Create a new EncryptedXml object.
Dim exml As New EncryptedXml(Doc)
' Decrypt the XML document.
exml.DecryptDocument()
End Sub
End Module
Probíhá kompilace kódu
V projektu, který cílí na rozhraní .NET Framework, uveďte odkaz na
System.Security.dll
.V projektu, který cílí na .NET Core nebo .NET 5, nainstalujte balíček NuGet System.Security.Cryptography.Xml.
Zahrňte následující obory názvů: System.Xml, System.Security.Cryptographya System.Security.Cryptography.Xml.
Zabezpečení .NET
Certifikát X.509 použitý v tomto příkladu je určený pouze pro testovací účely. Aplikace by měly používat certifikát X.509 vygenerovaný důvěryhodnou certifikační autoritou.