Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klasy w System.Security.Cryptography.Xml przestrzeni nazw umożliwiają szyfrowanie i odszyfrowywanie elementu w dokumencie XML. Szyfrowanie XML to standardowy sposób wymiany lub przechowywania zaszyfrowanych danych XML bez obaw o łatwe odczytywanie danych. Aby uzyskać więcej informacji na temat standardu szyfrowania XML, zobacz specyfikację World Wide Web Consortium (W3C) dotyczącą szyfrowania XML znajdującego się w https://www.w3.org/TR/xmldsig-core/lokalizacji .
W tym przykładzie odszyfrowuje element XML, który został zaszyfrowany przy użyciu metod opisanych w temacie: Szyfrowanie elementów XML przy użyciu certyfikatów X.509. Znajduje element <EncryptedData
> , odszyfrowuje element, a następnie zastępuje element oryginalnym elementem XML w postaci zwykłego tekstu.
Przykład kodu w tej procedurze odszyfrowuje element XML przy użyciu certyfikatu X.509 z lokalnego magazynu certyfikatów bieżącego konta użytkownika. W przykładzie użyto DecryptDocument metody , aby automatycznie pobrać certyfikat X.509 i odszyfrować klucz sesji przechowywany wEncryptedKey
><elemekcie <EncryptedData
> elementu. Następnie DecryptDocument metoda automatycznie używa klucza sesji do odszyfrowywania elementu XML.
Ten przykład jest odpowiedni w sytuacjach, w których wiele aplikacji musi udostępniać zaszyfrowane dane lub gdzie aplikacja musi zapisywać zaszyfrowane dane między godzinami jej uruchomienia.
Aby odszyfrować element XML z certyfikatem X.509
XmlDocument Utwórz obiekt, ładując plik XML z dysku. Obiekt XmlDocument zawiera element XML do odszyfrowania.
XmlDocument xmlDoc = new XmlDocument();
Dim xmlDoc As New XmlDocument()
Utwórz nowy EncryptedXml obiekt, przekazując XmlDocument obiekt do konstruktora.
EncryptedXml exml = new EncryptedXml(Doc);
Dim exml As New EncryptedXml(Doc)
Odszyfruj DecryptDocument dokument XML przy użyciu metody .
exml.DecryptDocument();
exml.DecryptDocument()
XmlDocument Zapisz obiekt.
xmlDoc.Save("test.xml");
xmlDoc.Save("test.xml")
Przykład
W tym przykładzie przyjęto założenie, że plik o nazwie "test.xml"
istnieje w tym samym katalogu co skompilowany program. Przyjęto również założenie, że "test.xml"
zawiera "creditcard"
element . Poniższy kod XML można umieścić w pliku o nazwie test.xml
i użyć go w tym przykładzie.
<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
Kompilowanie kodu
W projekcie przeznaczonym dla programu .NET Framework dołącz odwołanie do
System.Security.dll
elementu .W projekcie przeznaczonym dla platformy .NET Core lub .NET 5 zainstaluj pakiet NuGet System.Security.Cryptography.Xml.
Uwzględnij następujące przestrzenie nazw: System.Xml, System.Security.Cryptographyi System.Security.Cryptography.Xml.
Zabezpieczenia platformy .NET
Certyfikat X.509 używany w tym przykładzie jest przeznaczony tylko do celów testowych. Aplikacje powinny używać certyfikatu X.509 wygenerowanego przez zaufany urząd certyfikacji.