Не могу зашифровать данные, которые больше или равны миллиону байтов. Не могу понять, в чём проблема.
Вот код дешифровки:
public static async Task<byte[]> DecryptedAES(byte[] data, HeaderDecrypted _header)
{
using Aes _aes = Aes.Create();
_aes.Key = Convert.FromBase64String(_header.Key);
_aes.IV = Convert.FromBase64String(_header.IV);
Console.WriteLine($"KEY: {_header.Key}\nIV: {_header.IV}");
using (MemoryStream ms = new MemoryStream(data))
{
using (CryptoStream cs = new CryptoStream(ms, _aes.CreateDecryptor(_aes.Key, _aes.IV), CryptoStreamMode.Read))
{
using (MemoryStream final = new MemoryStream())
{
List<byte> buffer = new List<byte>();
int byteRead;
while ((byteRead = cs.ReadByte()) != -1)
{
buffer.Add((byte)byteRead);
}
await final.WriteAsync(buffer.ToArray(),0, buffer.Count);
return final.ToArray();
}
}
}
}
А вот, как я шифрую:
public static async Task<byte[]> Encrypt(byte[] to, HeaderDecrypted AES_Key)
{
if (AES_Key == null)
{
throw new NotImplementedException("Отсутсвует класс AES-ключей.");
}
using Aes aes = Aes.Create();
aes.IV = Convert.FromBase64String(AES_Key.IV);
aes.Key = Convert.FromBase64String(AES_Key.Key);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
await cs.WriteAsync(to, 0, to.Length);
cs.Close();
}
return ms.ToArray();
}
}
Я проверял ключи и вектор. Они абсолютно идентичны. Что мне делать? Спасибо.