Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static void encryptFile(string inputFile, string outputFile, string password)
- {
- byte[] salt = GenerateRandomSalt();
- FileStream fsCrypt = new FileStream(outputFile, FileMode.Create);
- byte[] passwordBytes = System.Text.Encoding.UTF8.GetBytes(password);
- RijndaelManaged AES = new RijndaelManaged();
- AES.KeySize = 256;
- AES.BlockSize = 128;
- AES.Padding = PaddingMode.PKCS7;
- var key = new Rfc2898DeriveBytes(passwordBytes, salt, 50000);
- AES.Key = key.GetBytes(AES.KeySize / 8);
- AES.IV = key.GetBytes(AES.BlockSize / 8);
- AES.Mode = CipherMode.CFB;
- fsCrypt.Write(salt, 0, salt.Length);
- CryptoStream cs = new CryptoStream(fsCrypt, AES.CreateEncryptor(), CryptoStreamMode.Write);
- FileStream fsIn = new FileStream(inputFile, FileMode.Open);
- byte[] buffer = new byte[1048576];
- int read;
- int pastP = 0;
- while ((read = fsIn.Read(buffer, 0, buffer.Length)) > 0)
- {
- cs.Write(buffer, 0, read);
- var percentComplete = (float)fsIn.Position * 100 / fsIn.Length;
- int percentInt = Convert.ToInt32(percentComplete);
- if (pastP != percentInt)
- {
- Console.WriteLine(percentInt);
- }
- pastP = percentInt;
- }
- fsIn.Close();
- cs.Close();
- fsCrypt.Close();
- }
- private static void decryptFile(string inputFile, string outputFile, string password)
- {
- byte[] passwordBytes = System.Text.Encoding.UTF8.GetBytes(password);
- byte[] salt = new byte[32];
- FileStream fsCrypt = new FileStream(inputFile, FileMode.Open);
- fsCrypt.Read(salt, 0, salt.Length);
- RijndaelManaged AES = new RijndaelManaged();
- AES.KeySize = 256;
- AES.BlockSize = 128;
- var key = new Rfc2898DeriveBytes(passwordBytes, salt, 50000);
- AES.Key = key.GetBytes(AES.KeySize / 8);
- AES.IV = key.GetBytes(AES.BlockSize / 8);
- AES.Padding = PaddingMode.PKCS7;
- AES.Mode = CipherMode.CFB;
- CryptoStream cs = new CryptoStream(fsCrypt, AES.CreateDecryptor(), CryptoStreamMode.Read);
- FileStream fsOut = new FileStream(outputFile, FileMode.Create);
- int read;
- byte[] buffer = new byte[1048576];
- int pastP = 0;
- while ((read = cs.Read(buffer, 0, buffer.Length)) > 0)
- {
- fsOut.Write(buffer, 0, read);
- var percentComplete = (float)fsOut.Position * 100 / fsCrypt.Length;
- int percentInt = Convert.ToInt32(percentComplete);
- if (pastP != percentInt)
- {
- Console.WriteLine(percentInt);
- }
- pastP = percentInt;
- }
- fsOut.Close();
- fsCrypt.Close();
- }
- public static byte[] GenerateRandomSalt()
- {
- byte[] data = new byte[32];
- using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
- {
- for (int i = 0; i < 10; i++)
- {
- rng.GetBytes(data);
- }
- }
- return data;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement