Write XML in Base64 encoding

前端 未结 4 2075
后悔当初
后悔当初 2021-01-20 00:37

Following my questions about storing data, it has been suggested that I could use XML but then obfuscate the file by encoding it using Base64. I like this idea, and I have a

4条回答
  •  猫巷女王i
    2021-01-20 01:06

    Here is an example using a MemoryStream

    Save the XML data using MemoryStream to base64 encode the data and write it to a file.

    using (var ms = new MemoryStream())
    {   
        // Memory Stream
        using (XmlWriter writer = XmlWriter.Create(ms,settings)) 
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("Database");
            writer.WriteStartElement("Entry");
            writer.WriteAttributeString("key", "value");
            writer.WriteEndElement();
            writer.WriteEndElement();
    
            writer.Flush();
            writer.Close();
    
            // XML Data (Debug)
            Console.WriteLine(new UTF8Encoding().GetString(ms.ToArray()));
    
            // Pre encoding hex (Debug)
            Console.WriteLine(BitConverter.ToString(ms.ToArray()));
    
            string s = Convert.ToBase64String(ms.ToArray());
            Console.WriteLine(s); // (Debug)
    
            // Post encoding
            File.WriteAllText(@"C:\Temp\A.enc", s);
        }
    }
    

    Read the file back

    // Read encoded file back to xml
    string enc_text = File.ReadAllText(@"C:\Temp\A.enc");
    Console.WriteLine(enc_text); // (Debug)
    
    // Pre encoding hex
    byte[] mem_bytes = Convert.FromBase64String(enc_text);
    Console.WriteLine(BitConverter.ToString(mem_bytes)); // (Debug)
    
    // XML Data
    Console.WriteLine(new UTF8Encoding().GetString(mem_bytes));
    
    // Read byte array into Reader
    using (var stream = new MemoryStream(mem_bytes))
    {
        using (XmlReader reader = XmlReader.Create(stream))
        {
            // Use reader as desired
        }
    }
    

提交回复
热议问题