none
Aus der App-Entwickler-Hotline: Ent- und Verschlüsseln einer XML-Datei RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,
    heute wurde uns bei der App-Entwickler-Hotline unter anderem folgende Frage gestellt:

    Wie kann man eine XML-Datei ver- und entschlüsseln?

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:

    Im folgenden Codebeispiel wird zunächst eine XML-Datei erzeugt (nicht auf der Festplatte gespeichert), die später verschlüsselt werden soll.

    // Die XML Datei erstellen
    XmlDocument dom = new XmlDocument();
    XmlElement root = dom.CreateElement("personen");
    dom.AppendChild(root);
    XmlElement x = dom.CreateElement("person");
    XmlElement x1 = dom.CreateElement("name");
    x1.InnerText = "TestPerson";
    x.AppendChild(x1);
    XmlElement x2 = dom.CreateElement("alter");
    x2.InnerText = "21";
    x.AppendChild(x2);
    root.AppendChild(x);


    Zum Verschlüsseln muss nun ein DataProtectionProvider (siehe [1]) erzeugt werden:

    string gesamt = dom.GetXml();
    IBuffer buff = CryptographicBuffer.ConvertStringToBinary(gesamt, BinaryStringEncoding.Utf16BE);
    IBuffer encrypt = await provider.ProtectAsync(buff);   
    StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;            
    StorageFile dataFile = await localFolder.CreateFileAsync("dataFile.xml", CreationCollisionOption.OpenIfExists);   
    await FileIO.WriteBufferAsync(sampleFile, encrypt);


    Das Entschlüsseln der Datei läuft analog dazu ab:

    StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.xml");
    IBuffer buff = await FileIO.ReadBufferAsync(sampleFile);
    IBuffer decrypt = await provider.UnprotectAsync(buff);
    string xml = CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf16BE, decrypt);
    
    //Das Xml Dokument wiederherstellen
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);

    [1] DataProtectionProvider Class

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,
    Thomas Fröhle
    App-Entwickler-Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die App-Entwickler-Hotline: http://www.msdn-online.de/Hotline
    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die App-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu MarkenzeichenInformationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die App-Entwickler-Hotline.


    Montag, 15. Juli 2013 12:39