Hvordan Krypter en XML-fil auto

Hvordan Krypter en XML-fil auto


Bedrifter er ofte avhengige av XML for å utveksle data, men å dele informasjon kommer i fare. Kredittkortnumre, telefonnumre, adresser, kundens navn og proprietære forretningsinformasjon utgjør noen områder av sensitive data. Hva kan være hensiktsmessig å dele med en kunde, partner eller klient kan ikke være trygge med en annen. Heldigvis kan XML-data krypteres for å beskytte den. Trinnene nedenfor bruke .Net Framework og C # språket, men XML kryptering teknikker eksisterer i Java og andre rammer også.

Bruksanvisning

Kryptere og dekryptere en XML-fil

1 Lag et XML-dokument som inneholder sensitive data:

<Bestilling>
<Items>
<Element> 444444
<Antall> 3 </ Antall>
<CostPerItem> 50.00 </ CostPerItem>
</ Post>
</ Items>
<Credit> 0000123456789000 </ credit>
<CREDIT> Visa </ CREDIT>
</ Bestill>

2 Lagre denne filen som \ "Order.xml \" i en mappe som heter Orders.

3 Lag en konsoll applikasjon i Visual Studio. Åpne Visual Studio. Velg \ "File -> New Project, \" ". Console Application \" og velg deretter ikonet for \ Legg en referanse til System.Security til prosjektet. Legg til følgende \ "med \" utsagn til toppen av Program filen:

ved hjelp av System

bruker System.Security.Cryptography

bruker System.Security.Cryptography.Xml

bruker System.Text

bruker System.Xml;

4 Les i XML-filen. Innenfor den viktigste metoden for programmet, instantiate en XmlDocument objekt og laste inn XML-filen inn i den:

XmlDocument xmlDoc = ny XmlDocument ()

xmlDoc.Load(\&quot;c:\\\\Orders\\\\order.xml\&quot;);

5 Opprett en krypteringsnøkkel. Det finnes en rekke å velge mellom, med varierende styrke og sysselsetter ulike typer nøkler (se \ "Kryptografi i Net \" i Resources). Dette eksemplet bruker Tripledes kryptering:

TripleDESCryptoServiceProvider encryptionKey = new TripleDESCryptoServiceProvider ();

6 Isoler en xml element fra filen din for å kryptere og instantiate en XmlElement objekt for å inneholde den. For å kryptere hele filen, velger sin rot element. I dette eksempelet er roten til noden \ "Order \":

XmlElement orderElem = xmlDoc.SelectSingleNode (\ "Order \") som XmlElement

Hvis du ønsket å kryptere bare CreditCardInformation node, ville du skriver det slik:

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

7 Krypterer data ved hjelp av krypteringsnøkkelen opprettet ovenfor:

EncryptedXml encXml = ny EncryptedXml (xmlDoc)

byte[] encryptedOrder = encXml.EncryptData(orderElem, encryptionKey, false);

8 Instantiate en EncryptedData objekt. Sett det er URI egenskaper for både krypterte xml elementene og krypteringsalgoritmen:

EncryptedData encryptedData = new EncryptedData ()

encryptedData.Type = EncryptedXml.XmlEncElementUrl

encryptedData.EncryptionMethod = new

EncryptionMethod (EncryptedXml.XmlEncTripleDESUrl);

9 Sett CipherData.CipherValue eiendommen av EncryptedData objektet til dataene du kryptert over:

encryptedData.CipherData = new CipherData ()

encryptedData.CipherData.CipherValue = encryptedOrder;

10 Erstatt innholdet i xml node med kryptert innhold:

EncryptedXml.ReplaceElement (orderElem, encryptedData, false);

11 Lagre kryptert xml:

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

12 For å dekryptere de krypterte dataene, du egentlig reversere prosessen. For dette eksempelet, vil dataene bli dekryptert i det samme programmet og bruke samme variabel som nøkkelen som krypteres den. I en reell situasjon, ville man sende nøkkelen til mottakeren i en separat fil fra kryptert xml (eller del det på annen måte). Dekryptering koden følger:

// Få dataene etter kodenavn

XmlElement encOrderElem = xmlDoc.GetElementsByTagName(\&quot;EncryptedData\&quot;)[0] as XmlElement

// Laste inn data i en EncryptedData protest

EncryptedData encData = new EncryptedData()

encData.LoadXml(encOrderElem)

// Dekryptere data ved hjelp nøkkelen opprettet ovenfor

EncryptedXml encryptedXml = new EncryptedXml()

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

// Replace the encrypted data with decrypted data in your xml document
encryptedXml.ReplaceData(encOrderElem, decryptedOrder)

// Save another file
xmlDoc.Save(\&quot;c:\\\\Orders\\\\decryptedOrder.xml\&quot;);

Hint

  • Ovennevnte er et veldig enkelt eksempel på hva som kan være en svært komplisert prosess. Kryptografi er et stort område verdig omfattende studie. Se referanser og ressurser avsnittene i denne artikkelen for lenker til mer forståelse.
  • Koden ovenfor forutsetter at du har plassert prøven XML-filen i en mappe som heter Orders, som ligger på roten av en stasjon lettered \ "C \" Hvis konfigurasjons forskjellig system eller du har opprettet eksempelfiler i andre mapper, husk å endre filbaner tilsvarende.