Événements
Créer des applications intelligentes
17 mars, 23 h - 21 mars, 23 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Vous pouvez utiliser les classes de l'espace de noms System.Security.Cryptography.Xml pour chiffrer et déchiffrer un élément d'un document XML. Le chiffrement XML est une méthode normalisée qui permet d'échanger et de stocker des données XML chiffrées sans que celles-ci ne puissent être lues facilement. Pour plus d’informations sur la norme de chiffrement XML, consultez la spécification W3C (World Wide Web Consortium) relative au chiffrement XML à l’adresse https://www.w3.org/TR/xmldsig-core/.
Cet exemple déchiffre un élément XML qui a été chiffré à l’aide des méthodes décrites dans : Comment : chiffrer des éléments XML avec les certificats X.509. Il recherche un élément <EncryptedData
>, le déchiffre, puis le remplace par l’élément XML en texte brut d’origine.
L'exemple de code de cette procédure déchiffre un élément XML à l'aide d'un certificat X.509 depuis le magasin de certificats local du compte d'utilisateur actuel. L’exemple utilise la méthode DecryptDocument pour récupérer automatiquement le certificat X.509 et déchiffrer une clé de session stockée dans l’élément <EncryptedKey
> de l’élément <EncryptedData
>. La méthode DecryptDocument utilise ensuite automatiquement la clé de session pour déchiffrer l'élément XML.
Cet exemple convient quand plusieurs applications doivent partager des données chiffrées ou quand une application doit enregistrer des données chiffrées entre chaque exécution.
Créez un objet XmlDocument en chargeant un fichier XML à partir du disque. L'objet XmlDocument contient l'élément XML à déchiffrer.
XmlDocument xmlDoc = new XmlDocument();
Dim xmlDoc As New XmlDocument()
Créez un objet EncryptedXml en passant l'objet XmlDocument au constructeur.
EncryptedXml exml = new EncryptedXml(Doc);
Dim exml As New EncryptedXml(Doc)
Déchiffrez le document XML à l'aide de la méthode DecryptDocument.
exml.DecryptDocument();
exml.DecryptDocument()
Enregistrez l'objet XmlDocument.
xmlDoc.Save("test.xml");
xmlDoc.Save("test.xml")
Cet exemple suppose qu'un fichier nommé "test.xml"
se trouve dans le même répertoire que le programme compilé. Il suppose également que "test.xml"
contient un élément "creditcard"
. Vous pouvez placer le code XML suivant dans un fichier appelé test.xml
et l'utiliser avec cet exemple.
<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
Dans un projet qui cible .NET Framework, incluez une référence à System.Security.dll
.
Dans un projet qui cible .NET Core ou .NET 5, installez le package NuGet System.Security.Cryptography.Xml.
Incluez les espaces de noms suivants : System.Xml, System.Security.Cryptography et System.Security.Cryptography.Xml.
Le certificat X.509 utilisé dans cet exemple sert à des fins de test uniquement. Il est recommandé d’utiliser un certificat X.509 généré par une autorité de certification approuvée pour les applications.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 23 h - 21 mars, 23 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Chiffrer des données du secteur public dans Azure - Training
Vue d’ensemble des options disponibles pour la gestion des clés de chiffrement et le chiffrement des données tout au long de leur cycle de vie, avec une attention particulière pour le secteur public.
Certification
Microsoft Certified : Cybersecurity Architect Expert - Certifications
En tant qu’architecte en cybersécurité Microsoft, vous traduisez une stratégie de cybersécurité en fonctionnalités qui protègent les ressources, l’activité et les opérations d’une organisation.
Documentation
Procédure : chiffrer des éléments XML avec des certificats X.509 - .NET
En savoir plus sur : Guide pratique pour chiffrer des éléments XML avec des certificats X.509
Procédure : signer des documents XML avec des signatures numériques - .NET
Découvrez comment signer des documents XML avec des signatures numériques. Utilisez des classes de l’espace de noms System.Security.Cryptography.Xml dans .NET.
Procédure : vérifier les signatures numériques de documents XML - .NET
En savoir plus sur : comment : vérifier les signatures numériques de documents XML