I am working by following the request to re-encrypt something that has been read before.
private void EncryptFile(string inputFile, string password)
{
string outputFile = inputFile + ".MM76";
byte[] salt = GenerateRandomSalt();
using (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);
using (CryptoStream cs = new CryptoStream(fsCrypt, AES.CreateEncryptor(), CryptoStreamMode.Write))
{
using (FileStream fsIn = new FileStream(inputFile, FileMode.Open))
{
byte[] buffer = new byte[1048576];
int read;
while ((read = fsIn.Read(buffer, 0, buffer.Length)) > 0)
{
cs.Write(buffer, 0, read);
}
}
}
}
}
exactly in this part;
using (FileStream fsIn = new FileStream(inputFile, FileMode.Open))
I tried Dispose and Delete but it doesn’t work. I cannot perform any action on this file.