/// <summary>
        /// Wrapper for StreamReader that allows to read Encrypted Files
        /// </summary>
        /// <param name="File">File to Read</param>
        /// <param name="EM">Encryption Method Used</param>
        /// <param name="Key">Key to Encrypt</param>
        public PatcherStreamReader(FileStream File, EncrytionMode EM, String Key = "GEM2015!")
        {
            switch (EM)
            {
                case EncrytionMode.None:
                    sr = new StreamReader(File);
                    break;
                case EncrytionMode.Standard:
                case EncrytionMode.Rijndael:
                    sr = new StreamReader(File);
                    byte[] key = new UnicodeEncoding().GetBytes(Key);
                    byte[] crypto = Convert.FromBase64String(sr.ReadToEnd());
                    byte[] plain = new byte[crypto.Length];
                    RijndaelManaged rm = new RijndaelManaged() { Padding = PaddingMode.Zeros };

                    MemoryStream ms = new MemoryStream(crypto);
                    CryptoStream cs = new CryptoStream(ms, rm.CreateDecryptor(key, key), CryptoStreamMode.Read);
                    int count = cs.Read(plain, 0, crypto.Length);

                    cs.Close();
                    ms.Close();
                    sr.Close();

                    MS = new MemoryStream(Encoding.UTF8.GetBytes((Encoding.UTF8.GetString(plain, 0, count).TrimEnd("\0".ToCharArray()))));
                    sr = new StreamReader(MS);
                    break;
                default:
                    break;
            }
        }
 /// <summary>
 /// Wrapper for StreamWriter, allows to write Encrypted files
 /// </summary>
 /// <param name="File">File to write to</param>
 /// <param name="EM">Encryption Method</param>
 /// <param name="key">Password to Encrypt with</param>
 public PatcherStreamWriter(FileStream File, EncrytionMode EM, String key = "GEM2015!")
 {
     switch (EM)
     {
         case EncrytionMode.None:
             sw = new StreamWriter(File);
             break;
         case EncrytionMode.Standard:
         case EncrytionMode.Rijndael:
             encrypt = true;
             sw = new StreamWriter(File);
             this.Key = new UnicodeEncoding().GetBytes(key);
             break;
         default:
             break;
     }
 }
Example #3
0
        /// <summary>
        /// Patcher to Generate a PatchList to use with this Patcher
        /// </summary>
        /// <param name="File">Handle of the File that should be Used as PatchList</param>
        public Patcher(string file, string folder, bool encrypt)
        {
            this.PatchList = File.Open(file, FileMode.Create, FileAccess.Write, FileShare.None);
            filePath = folder;

            if(encrypt)
            {
                Encryption = EncrytionMode.Rijndael;
            }
        }