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
GÅ
bruker System.Security.Cryptography
GÅ
bruker System.Security.Cryptography.Xml
GÅ
bruker System.Text
GÅ
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 ()
GÅ
xmlDoc.Load(\"c:\\\\Orders\\\\order.xml\");
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
GÅ
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)
GÅ
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 ()
GÅ
encryptedData.Type = EncryptedXml.XmlEncElementUrl
GÅ
encryptedData.EncryptionMethod = new
EncryptionMethod (EncryptedXml.XmlEncTripleDESUrl);
9 Sett CipherData.CipherValue eiendommen av EncryptedData objektet til dataene du kryptert over:
encryptedData.CipherData = new CipherData ()
GÅ
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(\"EncryptedData\")[0] as XmlElement
GÅ
// Laste inn data i en EncryptedData protest
EncryptedData encData = new EncryptedData()
GÅ
encData.LoadXml(encOrderElem)
GÅ
// Dekryptere data ved hjelp nøkkelen opprettet ovenfor
EncryptedXml encryptedXml = new EncryptedXml()
GÅ
byte[] decryptedOrder = encryptedXml.DecryptData(encData, encryptionKey)
GÅ
// Replace the encrypted data with decrypted data in your xml document
encryptedXml.ReplaceData(encOrderElem, decryptedOrder)
GÅ
// Save another file
xmlDoc.Save(\"c:\\\\Orders\\\\decryptedOrder.xml\");
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.