private static void ProcessFile(string sourceFileName, string outputFileName, ConfigureSymmetricAlgorithm configurator, string key, Action <Stream, Stream, ConfigureSymmetricAlgorithm, string> routine) { using (FileStream sourceStream = File.OpenRead(sourceFileName)) { using (FileStream outputStream = File.Create(outputFileName)) { routine(sourceStream, outputStream, configurator, key); } } }
internal static System.Security.Cryptography.SymmetricAlgorithm GetSymmetricAlgoritm(ConfigureSymmetricAlgorithm configurator) { System.Security.Cryptography.SymmetricAlgorithm algorithm; switch (configurator.Algorithm) { case SymmetricAlgorithm.AES: algorithm = new AesManaged() { BlockSize = configurator.BlockSize, Mode = configurator.Mode, KeySize = configurator.KeySize, Padding = configurator.PaddingMode, }; break; case SymmetricAlgorithm.TripleDES: algorithm = new TripleDESCryptoServiceProvider() { BlockSize = configurator.BlockSize, Padding = configurator.PaddingMode, KeySize = configurator.KeySize, Mode = configurator.Mode, }; break; case SymmetricAlgorithm.Rijndael: algorithm = new RijndaelManaged() { KeySize = configurator.KeySize, Padding = configurator.PaddingMode, BlockSize = configurator.BlockSize, Mode = configurator.Mode, }; break; case SymmetricAlgorithm.Rc2: algorithm = new RC2CryptoServiceProvider() { BlockSize = configurator.BlockSize, KeySize = configurator.KeySize, Padding = configurator.PaddingMode, Mode = configurator.Mode, }; break; default: algorithm = null; break; } return(algorithm); }