_Ziens_

C# - Data Encryption Method

Nov 5th, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.64 KB | None | 0 0
  1. private static void Encrypt (MemoryStream input, string password)
  2.         {
  3.             var value = input.ToArray ();
  4.             var keyBytes = new Rfc2898DeriveBytes (password, Encoding.UTF8.GetBytes (SaltKey)).GetBytes (KeyLength / 8);
  5.             var symmetricKey = new RijndaelManaged { Mode = CipherMode.CBC, Padding = PaddingMode.Zeros };
  6.             var encryptor = symmetricKey.CreateEncryptor (keyBytes, Encoding.UTF8.GetBytes (IVKey));
  7.             using (var outputStream = File.Exists (data) ? File.OpenWrite (data) : File.Create (data)) {
  8.                 using (var cryptoStream = new CryptoStream (outputStream, encryptor, CryptoStreamMode.Write)) {
  9.                     cryptoStream.Write (value, 0, value.Length);
  10.                     cryptoStream.FlushFinalBlock ();
  11.                     cryptoStream.Close ();
  12.                     outputStream.Close ();
  13.                 }
  14.             }
  15.         }
  16.  
  17.         private static MemoryStream Decrypt (string password)
  18.         {
  19.             MemoryStream outputStream = new MemoryStream ();
  20.             var keyBytes = new Rfc2898DeriveBytes (password, Encoding.UTF8.GetBytes (SaltKey)).GetBytes (KeyLength / 8);
  21.             var symmetricKey = new RijndaelManaged { Mode = CipherMode.CBC, Padding = PaddingMode.None };
  22.             var decryptor = symmetricKey.CreateDecryptor (keyBytes, Encoding.UTF8.GetBytes (IVKey));
  23.             using (var input = File.OpenRead (data))
  24.             using (var cryptoStream = new CryptoStream (input, decryptor, CryptoStreamMode.Read)) {
  25.                 var plainTextBytes = new byte[input.Length];
  26.                 var decryptedByteCount = cryptoStream.Read (plainTextBytes, 0, plainTextBytes.Length);
  27.                 outputStream.Write (plainTextBytes, 0, decryptedByteCount);
  28.                 outputStream.Flush ();
  29.                 outputStream.Seek (0, SeekOrigin.Begin);
  30.                 cryptoStream.Close ();
  31.  
  32.                 return outputStream;
  33.             }
  34.         }
Advertisement
Add Comment
Please, Sign In to add comment