public int TransformBlock(byte[] inputBuffer,
int inputOffset,
int inputCount,
byte[] outputBuffer,
int outputOffset)
{
if (_disposed) {
throw new ObjectDisposedException(GetType().FullName);
}
for (int i=0; i<inputCount; i++) {
_index1 = (byte) (_index1 + 1);
_index2 = (byte) (_index2 + _permutation[_index1]);
byte tmp = _permutation[_index1];
_permutation[_index1] = _permutation[_index2];
_permutation[_index2] = tmp;
byte idx = (byte) (_permutation[_index1] + _permutation[_index2]);
byte val = (byte) (inputBuffer[inputOffset+i] ^ _permutation[idx]);
outputBuffer[outputOffset+i] = val;
}
return inputCount;
}