public override int EncryptBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
{
if (inputCount != BlockSize)
throw new ArgumentException("inputCount");
uint xl = BigEndianToUInt32(inputBuffer, inputOffset);
uint xr = BigEndianToUInt32(inputBuffer, inputOffset + 4);
xl ^= _p[0];
for (int i = 1; i < Rounds; i += 2)
{
xr ^= F(xl) ^ _p[i];
xl ^= F(xr) ^ _p[i + 1];
}
xr ^= _p[Rounds + 1];
UInt32ToBigEndian(xr, outputBuffer, outputOffset);
UInt32ToBigEndian(xl, outputBuffer, outputOffset + 4);
return BlockSize;
}