void CopyAndEncrypt(byte[] buffer, int offset, int count)
{
const int CopyBufferSize = 4096;
byte[] localBuffer = new byte[CopyBufferSize];
while (count > 0) {
int bufferCount = (count < CopyBufferSize) ? count : CopyBufferSize;
Array.Copy(buffer, offset, localBuffer, 0, bufferCount);
EncryptBlock(localBuffer, 0, bufferCount);
baseOutputStream_.Write(localBuffer, 0, bufferCount);
count -= bufferCount;
offset += bufferCount;
}
}