Sådan Krypter en XML-fil programmerisk

Kryptering XML. hængelåse billede af Christopher Hall fra Fotolia.com

Virksomhederne er ofte afhængige af XML til at udveksle data, men deling af oplysninger kommer på en risiko.Kreditkortnumre, telefonnumre, adresser, kundens navn og proprietære forretningsoplysninger udgør nogle områder af følsomme data.Hvad kunne være hensigtsmæssigt at dele med én kunde, partner eller kunde, ikke kan være sikker med en anden.Heldigvis kan XML data krypteres for at beskytte den.Nedenstående trin bruger .Net Framework og C # sproget, men XML krypteringsteknikker eksisterer i Java og andre rammer så godt.

hvad du har brug

  • En Visual C # udviklingsmiljø (se afsnittet Ressourcer til et link til download en udtrykkeligversion gratis)

kryptering og dekryptering af en XML-fil

  1. Opret en XML-dokument, der indeholder følsomme data:

    & lt; Order & gt;
    & lt; Elementer & gt;
    & lt; Item & gt; 444444
    & lt; Mængde & gt; 3 & lt; / Mængde & gt;
    & lt; CostPerItem & gt; 50,00 & lt; / CostPerItem & gt

    ;
    & lt; / Item & gt;
    & lt; / Produkter & gt;
    & lt; CreditCardNumber & gt; 0000123456789000 & lt; / CreditCardNumber & gt;
    & lt; CreditCardType & gt; Visa & lt; / CreditCardType & gt;
    & lt; / Bestil & gt;

  2. Gem denne fil som \ "Order.xml \" i en mappe kaldet ordrer.

  3. Opret en konsol ansøgning i Visual Studio.Åbn Visual Studio.Vælg \ "File - & gt; Nyt projekt, \" og vælg derefter ikonet for \ ". Console Application \" Tilføj en reference til System.Security til projektet.Tilføj følgende \ "hjælp \" udsagn til toppen af ​​dit program fil:

    hjælp System
    GO
    hjælp System.Security.Cryptography
    GO
    hjælp System.Security.Cryptography.Xml
    GO
    hjælp System.Text
    GO
    hjælp System.Xml;

  4. Læs i XML-filen.Inden den vigtigste metode til dit program, instantiere et XmlDocument objekt og indlæse XML-filen ind i det:

    XmlDocument xmlDoc = ny XmlDocument ()
    GO

    & amp; # 9 xmlDoc.Load (\ & amp; quot; c: \\\\ Ordrer \\\\ order.xml \ & amp; quot;);
  5. Opret en krypteringsnøgle.Der er en række at vælge imellem, af varierende styrker og beskæftiger forskellige typer af nøgler (se \ "kryptografi i .Net \" i afsnittet Ressourcer).Dette eksempel bruger TripleDES kryptering:

    TripleDESCryptoServiceProvider encryptionKey = ny TripleDESCryptoServiceProvider ();

  6. Isoler en xml element fra din fil til at kryptere og instantiere et XmlElement objekt til at indeholde det.Hvis du vil kryptere hele filen, vælge sin rod element.I dette eksempel, roden er node \ "Bestil \":

    XmlElement orderElem = xmlDoc.SelectSingleNode (\ "Bestil \") som XmlElement
    GO

    Hvis du ønskede at kryptere kun CreditCardInformation node, du ville skrive detsådan her:

    XmlElement orderElem = xmlDoc.SelectSingleNode (\ "Bestil / CreditCardInformation \") som XmlElement;

  7. kryptere data ved hjælp af krypteringsnøglen oprettet ovenfor:

    EncryptedXml encXml = ny EncryptedXml (xmlDoc)
    GO

    byte [] encryptedOrder = encXml.EncryptData (orderElem, encryptionKey, false);
  8. instantiere et EncryptedData objekt.Sæt det URI egenskaber for både de krypterede xml elementer og krypteringsalgoritmen:

    EncryptedData encryptedData = ny EncryptedData ()
    GO

    & amp; # 9 encryptedData.Type = EncryptedXml.XmlEncElementUrl

    GO

    & amp; # 9; encryptedData.EncryptionMethod= nye & amp; # 9; & amp; # 9; & amp; # 9;& amp; # 9; & amp; # 9;

    EncryptionMethod (EncryptedXml.XmlEncTripleDESUrl);

  9. Indstil CipherData.CipherValue ejendom EncryptedData objekt til de data, du krypteret ovenfor:

    encryptedData.CipherData = ny CipherData ()
    GO

    & amp; # 9; encryptedData.CipherData.CipherValue = encryptedOrder;
  10. Erstat indholdet af din xml node med den krypterede indhold:

    EncryptedXml.ReplaceElement (orderElem, encryptedData, false);

  11. Gem den krypterede xml:

    xmlDoc.Save (\ "C: \\ Ordrer \\ encryptedOrder.xml \");

  12. At dekryptere de krypterede data, du hovedsageligt vende processen.I dette eksempel, bliver data dekrypteres i det samme program, og bruger den samme variabel som den nøgle, krypteret det.I den virkelige verden situationen, ville man sende nøglen til modtageren i en separat fil fra krypterede xml (eller dele det på anden måde).Den dekryptering kode følger:

    // Få dataene ved mærkenavn

    & amp; # 9; XmlElement encOrderElem = & amp; # 9; & amp; # 9 xmlDoc.GetElementsByTagName (\ & amp; quot; EncryptedData \ & amp; quot;)[0] som XmlElement

    GO

    // Indlæs data i en EncryptedData indsigelse

    EncryptedData encData = ny EncryptedData ()

    GO

    encData.LoadXml (encOrderElem)

    GO

    // dekryptere data ved hjælp af nøglen oprettet ovenfor

    EncryptedXmlencryptedXml = ny EncryptedXml ()

    GO

    byte [] decryptedOrder = encryptedXml.DecryptData (encData, encryptionKey)

    GO

    // Udskift krypterede data med dekrypterede data i dit xml dokument
    encryptedXml.ReplaceData (encOrderElem, decryptedOrder)

    GO

    // Gem anden fil
    xmlDoc.Save (\ & amp; quot; c: \\\\ Ordrer \\\\ decryptedOrder.xml \ & amp; quot;);

Tips & amp;Advarsler

  • Ovenstående er et meget simpelt eksempel på, hvad der kan være en yderst kompleks proces.Kryptografi er et stort område værdig omfattende undersøgelse.Se Referencer og ressourcer afsnit i denne artikel for links til yderligere din forståelse.
  • Ovenstående kode forudsætter, at du har placeret din prøve XML-fil i en mappe kaldet Ordrer, der er bosat på roden af ​​et drev bogstaverne \ "C. \" Hvis din systemkonfiguration adskiller eller du harskabt din prøve filer i andre mapper, skal du huske at ændre filstier i overensstemmelse hermed.

Ressourcer

  • \ "kryptografi i .Net \"
  • \ "Microsoft Express Downloads: Hent Visual C # 2008 Express Edition \"
922
0
3
Xml