-
-
Notifications
You must be signed in to change notification settings - Fork 23
Crypto.cs | FileEncrypt
HackTheDev edited this page May 3, 2021
·
1 revision
This is a bit of a complicated method to explain, but it is used encrypt a file. Provide this method with the path of a file and a password and the file will be encrypted.
byte[] salt = GenerateRandomSalt();
FileStream fsCrypt = new FileStream(inputFile + Properties.Settings.Default.extension, 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;
try
{
while ((read = fsIn.Read(buffer, 0, buffer.Length)) > 0)
{
Application.DoEvents();
cs.Write(buffer, 0, read);
}
fsIn.Close();
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
finally
{
cs.Close();
fsCrypt.Close();
}
Copyright (c) Marcel Schalk - Patreon: Shy Devil