Hoe maak je een XML bestand programmatisch versleutelen

Versleutelen van XML . hangsloten afbeelding door Christopher Hall van Fotolia.com

Bedrijven vaak een beroep op XML om gegevens uit te wisselen, maar het delen van informatie komt op een risico.Creditcardnummers, telefoonnummers, adressen, namen van de klant en bedrijfseigen zakelijke informatie maken sommige gebieden van gevoelige gegevens.Wat zou geschikt om te delen met een klant, partner of klant zijn, kan niet veilig met een ander.Gelukkig kunnen XML data worden versleuteld om deze te beschermen.De volgende stappen gebruiken het .Net Framework en de C # taal, maar XML-encryptie technieken bestaan ​​in Java en andere frameworks als goed.

wat je

  • Een Visual C # ontwikkelomgeving nodig (zie het gedeelte Bronnen voor een link naar een uitdrukkelijke downloadenversie gratis)

coderen en decoderen van een XML-bestand

  1. Maak een XML-document dat gevoelige gegevens bevat:

    & lt; Orde & gt;
    & lt; Items & gt;
    & lt; Punt & gt; 444.444
    & lt; Aantal & gt; 3 & lt; / kwantiteit & g

    t;
    & lt; CostPerItem & gt; 50,00 & lt; / CostPerItem & gt;
    & lt; / Punt & gt;
    & lt; / Artikelen & gt;
    & lt; creditcardnummer & gt; 0000123456789000 & lt; / creditcardnummer & gt;
    & lt; CreditCardType & gt; Visa & lt; / CreditCardType & gt;
    & lt; / Order & gt;

  2. Bewaar dit bestand als \ "Order.xml \" in een map met de naam Orders.

  3. Maak een console applicatie in Visual Studio.Open Visual Studio.Selecteer \ "Bestand - & gt; Nieuw project, \" en selecteer vervolgens het pictogram voor \ ". Console Application \" In een verwijzing naar System.Security aan het project.Voeg de volgende \ "met \" verklaringen aan de bovenkant van je programma bestand:

    using System
    GO
    behulp System.Security.Cryptography
    GO
    behulp System.Security.Cryptography.Xml
    GO
    behulp System.Text
    GO
    behulp System.Xml;

  4. lezen in het XML-bestand.Binnen de belangrijkste methode van uw programma, een instantie van een object XMLDocument en laadt het XML-bestand erin:

    XmlDocument XMLDoc = new XmlDocument ()
    GO

    & amp; # 9; xmlDoc.Load (\ & amp; quot; c: \\\\ Bestellingen \\\\ order.xml \ & amp; quot;);
  5. Maak een encryptiesleutel.Er zijn een aantal om uit te kiezen, van verschillende sterktes en met gebruikmaking van verschillende toetsen (zie \ "Cryptografie in .Net \" in de sectie Resources).Dit voorbeeld gebruikt TripleDES encryptie:

    TripleDESCryptoServiceProvider encryptionKey = new TripleDESCryptoServiceProvider ();

  6. Isoleer een XML-element uit uw bestand te versleutelen en instantiëren een XmlElement object om het te bevatten.Om het hele bestand te coderen, selecteert u de root element.In dit voorbeeld is de wortel is het knooppunt \ "Order \":

    XmlElement orderElem = xmlDoc.SelectSingleNode (\ "Order \") zoals XmlElement
    GO

    Als je wilde alleen de creditcardgegevens op knooppunt versleutelen, zou je het schrijftals dit:

    XmlElement orderElem = xmlDoc.SelectSingleNode (\ "Order / creditcardgegevens op \") als XmlElement;

  7. Versleutel de gegevens met behulp van de encryptiesleutel hierboven gemaakt:

    EncryptedXml encXml = new EncryptedXml (XMLDoc)
    GO

    byte [] encryptedOrder = encXml.EncryptData (orderElem, encryptionKey, false);
  8. instantiëren een EncryptedData object.Stel het is URI eigenschappen voor zowel de gecodeerde XML-elementen en de encryptie-algoritme:

    EncryptedData encryptedData = new EncryptedData ()
    GO

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

    GO

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

    EncryptionMethod (EncryptedXml.XmlEncTripleDESUrl);

  9. Set eigendom CipherData.CipherValue van de EncryptedData object naar de gegevens die u hierboven gecodeerd:

    encryptedData.CipherData = new CipherData ()
    GO

    & amp; # 9; encryptedData.CipherData.CipherValue = encryptedOrder;
  10. Vervang de inhoud van uw XML-node met de gecodeerde inhoud:

    EncryptedXml.ReplaceElement (orderElem, encryptedData, false);

  11. Sla de gecodeerde xml:

    xmlDoc.Save (\ "c: \\ Bestellingen \\ encryptedOrder.xml \");

  12. Om de versleutelde gegevens te decoderen, je in wezen het proces omkeren.In dit voorbeeld worden de gegevens ontsleuteld in hetzelfde programma en dezelfde variabele als de sleutel die hij versleuteld.In een real-world situatie, zou men de sleutel van de ontvanger te sturen in een apart bestand uit de gecodeerde xml (of delen op een andere manier).De decryptie code volgt:

    // Get de data op tag naam

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

    GO

    gegevens // Load in een EncryptedData bezwaar

    EncryptedData encData = new EncryptedData ()

    GO

    encData.LoadXml (encOrderElem)

    GO

    // decoderen van de gegevens met behulp van de toets boven

    EncryptedXml gecreëerdencryptedXml = new EncryptedXml ()

    GO

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

    GO

    // Vervang de versleutelde gegevens met de gedecodeerde gegevens in het XML-document
    encryptedXml.ReplaceData (encOrderElem, decryptedOrder)

    GO

    // Sla een ander bestand
    xmlDoc.Save (\ & amp; quot; c: \\\\ Bestellingen \\\\ decryptedOrder.xml \ & amp; quot;);

Tips & amp;Waarschuwingen

  • Het bovenstaande is een heel eenvoudig voorbeeld van wat kan een zeer ingewikkeld proces.Cryptografie is een uitgestrekt gebied waardig uitgebreide studie.Zie de verwijzingen en bronnen delen van dit artikel voor links naar uw begrip te bevorderen.
  • De bovenstaande code gaat ervan uit dat u uw monster XML-bestand in een map met de naam Orders, die zich op de hoofdmap van een station letters \ "C \" Als uw systeemconfiguratie hebt geplaatst anders of je hebtcreëerde je steekproef bestanden in andere mappen, vergeet niet om het bestand paden dienovereenkomstig.

Resources

  • \ "Cryptografie in .Net \"
  • \ "Microsoft Express Downloads: Download Visual C # 2008 Express Edition \"
740
0
3
Xml