Archive for January 2011

Non compliant XML in Configuration file Base64

I had a need to store some configuration data that is non XML compliant in my .net configuration file. As the configuration file is XML file I settled on storing the data in Base64 and then converting it back after it’s read from the configuration file. First we take the string and convert it to bytes then we convert the bytes to Base64 string that will be written to the configuration file. Reverse when you want to read the string from the configuration file.

And now for the code, as a UnitTest

// C#
string original = “&at;=@|”=’_EMPTY_'”;
// base64 value = JmF0Oz1AfCcnPSdfRU1QVFlfJw==

// to bytes and back test
byte[] dBytes = new System.Text.UTF8Encoding().GetBytes( original );
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
string str = enc.GetString(dBytes);
// compare
Assert.AreEqual( original, str);

// This is the string to put in the configuration file now Base64 formatted
string base64String = Convert.ToBase64String( dBytes );
// config string base64 value=JmF0Oz1AfCcnPSdfRU1QVFlfJw==
Console.WriteLine( “config string base64 value=”+ base64String );

// Convert Base64 back to a normal string, this needs to be done after reading
// the base 64 string from the config file
byte[] nonBase64bytes = Convert.FromBase64String( base64String );
// string from bytes
string fromBytes = new System.Text.UTF8Encoding().GetString(nonBase64bytes);
// Make sure it still adds up with the original
Assert.AreEqual(original, fromBytes );