Самый эффективный способ чтения данных из потока

У меня есть алгоритм для шифрования и дешифрования данных с использованием симметричного шифрования. в любом случае, когда я собираюсь расшифровать, У меня:

CryptoStream cs = new CryptoStream(ms, cryptoTransform, CryptoStreamMode.Read);

Мне нужно прочитать данные из cs CryptoStream и поместить эти данные в массив байтов. Таким образом, один метод может быть:

  System.Collections.Generic.List<byte> myListOfBytes = new System.Collections.Generic.List<byte>();

   while (true)
   {
                int nextByte = cs.ReadByte();
                if (nextByte == -1) break;
                myListOfBytes.Add((Byte)nextByte);
   }
   return myListOfBytes.ToArray();

Другой метод может быть:

ArrayList chuncks = new ArrayList();

byte[] tempContainer = new byte[1048576];

int tempBytes = 0;
while (tempBytes < 1048576)
{
    tempBytes = cs.Read(tempContainer, 0, tempContainer.Length);
    //tempBytes is the number of bytes read from cs stream. those bytes are placed
    // on the tempContainer array

    chuncks.Add(tempContainer);

}

// later do a for each loop on chunks and add those bytes

Я не могу заранее знать длину поток cs:

enter image description here

или, возможно, мне следует реализовать свой класс стека. Я буду шифровать много информации, поэтому повышение эффективности этого кода сэкономит много времени

25
задан BrokenGlass 24 September 2011 в 21:49
поделиться