public static void EncryptFile(string inputFileName, string outputFileName, string algorithmName) { using (SymmetricAlgorithm algorithm = AlgorithmProvider.GetAlgorithm(algorithmName)) using (var inputFileStream = new FileStream(inputFileName, FileMode.Open, FileAccess.Read)) using (var outputFileStream = new FileStream(outputFileName, FileMode.OpenOrCreate, FileAccess.Write)) using (var cryptoStream = new CryptoStream(outputFileStream, algorithm.CreateEncryptor(), CryptoStreamMode.Write)) using (var streamWriter = new StreamWriter(KeyFileName)) { inputFileStream.CopyTo(cryptoStream); streamWriter.WriteLine(Convert.ToBase64String(algorithm.Key)); streamWriter.WriteLine(Convert.ToBase64String(algorithm.IV)); } }
public static void DecryptFile(string inputFileName, string outputFileName, string keyFileName, string algorithmName) { using (SymmetricAlgorithm algorithm = AlgorithmProvider.GetAlgorithm(algorithmName)) { using (var streamReader = new StreamReader(keyFileName)) { algorithm.Key = Convert.FromBase64String(streamReader.ReadLine()); algorithm.IV = Convert.FromBase64String(streamReader.ReadLine()); } using (var inputStreamFile = new FileStream(inputFileName, FileMode.Open, FileAccess.Read)) using (var cryptostream = new CryptoStream(inputStreamFile, algorithm.CreateDecryptor(), CryptoStreamMode.Read)) using (var outputStreamFile = new FileStream(outputFileName, FileMode.OpenOrCreate, FileAccess.Write)) { cryptostream.CopyTo(outputStreamFile); } } }