apply static method

Uint8List apply(
  1. Uint8List key,
  2. Uint8List data
)

Implementation

static Uint8List apply(Uint8List key, Uint8List data) {
  if (key.isEmpty) return data;
  final Uint8List state = Uint8List(256);
  for (int i = 0; i < 256; i++) {
    state[i] = i;
  }
  int j = 0;
  for (int i = 0; i < 256; i++) {
    j = (j + state[i] + key[i % key.length]) & 0xFF;
    final int temp = state[i];
    state[i] = state[j];
    state[j] = temp;
  }
  final Uint8List out = Uint8List(data.length);
  int x = 0;
  int y = 0;
  for (int i = 0; i < data.length; i++) {
    x = (x + 1) & 0xFF;
    y = (y + state[x]) & 0xFF;
    final int temp = state[x];
    state[x] = state[y];
    state[y] = temp;
    out[i] = data[i] ^ state[(state[x] + state[y]) & 0xFF];
  }
  return out;
}