generateNextDeterministicStr static method

String generateNextDeterministicStr(
  1. List<int> salt,
  2. int posStart,
  3. int length,
  4. RandomClientMode mode,
  5. bool nonleadzero,
)

Implementation

static String generateNextDeterministicStr(List<int> salt, int posStart,
    int length, RandomClientMode mode, bool nonleadzero) {
  List<int> ibuf = salt; //Coder.getBytesSimple(salt );
  int iLen = ibuf.length;
  int seed = 0;
  for (int i = 0; i < iLen; i++) {
    seed = (seed ^ ibuf[i]);
  }
  StringBuffer buffer = new StringBuffer();
  String characters = "";
  switch (mode) {
    case RandomClientMode.ALPHA:
      characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
      break;
    case RandomClientMode.ALPHANUMERIC:
      characters =
          "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
      break;
    case RandomClientMode.NUMERIC:
      characters = "1234567890";
      break;
  }
  int charactersLength = characters.length;
  for (int i = 0; i < length; i++) {
    int index =
        ((salt[(posStart + i) % salt.length] ^ (seed + (posStart + i))) %
            charactersLength);
    int ch = characters.codeUnitAt(index);
    if (nonleadzero && (ch == '0'.codeUnitAt(0))) {
      index =
          ((salt[(posStart + i) % salt.length] ^ (seed * (posStart + i))) %
              (charactersLength - 1));
    }
    buffer.write(String.fromCharCode(characters.codeUnitAt(index)));
  }
  return buffer.toString();
}