Задать вопрос
@OrangeKeks

Как решить проблему: Padding is invalid and cannot be removed на C# при размерах данных в более чем миллион байт?

Не могу зашифровать данные, которые больше или равны миллиону байтов. Не могу понять, в чём проблема.
Вот код дешифровки:
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();

      }
  }


Я проверял ключи и вектор. Они абсолютно идентичны. Что мне делать? Спасибо.
  • Вопрос задан
  • 27 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы