Я пытаюсь расшифровать и зашифровать файл с помощью C# и openssl.
Я использую этот commnd в openSsl для шифрования файла:
openssl aes-256-cbc -e -in<fileToEncrypt> -out <fileEncypted> -pass pass:<password>
и затем использую этот код в c#
private static void FileDecrypt(string inputFileName, string outputFileName, string password)
{
byte[] passwords = Encoding.UTF8.GetBytes(password);
byte[] salt = new byte[32];
using (FileStream fsCrypt = new FileStream(inputFileName, FileMode.Open))
{
fsCrypt.Read(salt, 0, salt.Length);
RijndaelManaged AES = new RijndaelManaged();
AES.KeySize = 256;//aes 256 bit encryption c#
AES.BlockSize = 128;//aes 128 bit encryption c#
var key = new Rfc2898DeriveBytes(passwords, salt, 50000);
AES.Key = key.GetBytes(AES.KeySize / 8);
AES.IV = key.GetBytes(AES.BlockSize / 8);
AES.Padding = PaddingMode.Zeros;
AES.Mode = CipherMode.CBC;
using (CryptoStream cryptoStream = new CryptoStream(fsCrypt, AES.CreateDecryptor(), CryptoStreamMode.Read))
{
using (FileStream fsOut = new FileStream(outputFileName, FileMode.Create))
{
int read;
byte[] buffer = new byte[1048576];
while ((read = cryptoStream.Read(buffer, 0, buffer.Length)) > 0)
{
fsOut.Write(buffer, 0, read);
}
}
}
}
}
В результате получается поврежденный файл. Вместо этого, если я использую
PaddingMode.PKCS7;
, возникает ошибка: заполнение недопустимо и не может быть удалено. '
Справка. Могу ли я расшифровать aes_256_cb c в c#?
PS Я вынужден использовать эту команду openSsl. Мне нужно решение для c# кода.