public static void ToBinaryStream(DataNode mainNode, BinaryWriter writer, DataNodeBinary.BinaryFormat format)
        {
            writer.Write("DEF2");
            switch (format)
            {
            case DataNodeBinary.BinaryFormat.Simple:
                DataNodeBinary.WriteSimpleFormat(mainNode, writer);
                break;

            case DataNodeBinary.BinaryFormat.SimpleCompresssed:
                DataNodeBinary.WriteCompressedFormat(mainNode, writer);
                break;

            case DataNodeBinary.BinaryFormat.Encrypted:
                DataNodeBinary.WriteEncryptedFormat(mainNode, writer);
                break;

            default:
                throw new ArgumentOutOfRangeException("format");
            }
        }
 private static void WriteEncryptedFormat(DataNode mainNode, BinaryWriter writer)
 {
     writer.Write(3);
     using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
     {
         rijndaelManaged.Key = DataNodeBinary.m_EncryptKey;
         rijndaelManaged.IV  = DataNodeBinary.m_EncryptVector;
         ICryptoTransform cryptoTransform = rijndaelManaged.CreateEncryptor(rijndaelManaged.Key, rijndaelManaged.IV);
         using (MemoryStream memoryStream = new MemoryStream())
         {
             using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write))
             {
                 BinaryWriter binaryWriter = new BinaryWriter(cryptoStream);
                 DataNodeBinary.WriteCompressedFormat(mainNode, binaryWriter);
                 binaryWriter.Flush();
                 cryptoStream.Flush();
             }
             memoryStream.Flush();
             writer.Write(memoryStream.ToArray());
         }
         cryptoTransform.Dispose();
     }
     writer.Flush();
 }