private void EKSKey(byte[] saltBytes, byte[] inputBytes)
{
int i;
int passwordOffset = 0,
saltOffset = 0;
uint[] lr = { 0, 0 };
int plen = _P.Length, slen = _S.Length;
for (i = 0; i < plen; i++)
_P[i] = _P[i] ^ StreamToWord(inputBytes, ref passwordOffset);
for (i = 0; i < plen; i += 2)
{
lr[0] ^= StreamToWord(saltBytes, ref saltOffset);
lr[1] ^= StreamToWord(saltBytes, ref saltOffset);
Encipher(lr, 0);
_P[i] = lr[0];
_P[i + 1] = lr[1];
}
for (i = 0; i < slen; i += 2)
{
lr[0] ^= StreamToWord(saltBytes, ref saltOffset);
lr[1] ^= StreamToWord(saltBytes, ref saltOffset);
Encipher(lr, 0);
_S[i] = lr[0];
_S[i + 1] = lr[1];
}
}