Я пытаюсь расшифровать зашифрованный файл. Мне удалось успешно расшифровать файл в .NET Standard. Но когда я использовал тот же код в .NET Core, я получаю следующее исключение.
System.Security.Cryptography.CryptographicException: 'Specified cipher mode is not valid for this algorithm.'
Это код, который я использую для расшифровки.
public void FileDecrypt(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;
using (CryptoStream cs = new CryptoStream(fsCrypt, AES.CreateDecryptor(), CryptoStreamMode.Read))
{
using (FileStream fsOut = new FileStream(outputFile, FileMode.Create))
{
int read;
byte[] buffer = new byte[1048576];
while ((read = cs.Read(buffer, 0, buffer.Length)) > 0)
{
fsOut.Write(buffer, 0, read);
}
}
}
}
Если я удаляю режим шифрования в .NET Core и расшифровываю, я получаю Padding Invalid Exception.
System.Security.Cryptography.CryptographicException: 'Padding is invalid and cannot be removed.'
Я изменил разные режимы заполнения и попытался, но выходной файл недействителен (неправильно расшифрован).
Почему я получаю исключение недопустимого режима шифрования в .Net Core, а не в .Net Standard?
Какие изменения я должен внести в .NET Core для правильной расшифровки?
Я использую
.NET Core SDK (reflecting any global.json):
Version: 2.1.503