hashBytes static method

int hashBytes(
  1. List<int> pass,
  2. List<int> ibuf,
  3. List<int> obuf,
  4. int ilen,
  5. int olen,
  6. List<int> salt,
)

Implementation

static int hashBytes(List<int> pass, List<int> ibuf, List<int> obuf, int ilen,
    int olen, List<int> salt) {
  int plen = pass.length;
  int i;
  int n = 0;
  int p = (-1);
  int seed = 0;
  int rval;
  if (ilen < 0) {
    ilen = ibuf.length;
  }
  for ((i = 1); i < salt.length; i++) {
    seed = (seed ^ salt[i]);
  }
  p = (seed % plen);
  for ((i = 0); i < olen; i++) {
    p++;
    if (p >= plen) {
      p = 0;
    }
    rval = pass[p];
    if (p == (seed % plen)) {
      seed = (pass[p] ^ seed);
    }
    rval = (pass[p] ^ seed);
    obuf[n % olen] = (ibuf[i% ilen] ^ rval);

    n++;
  }
  return ilen;
}