apply static method
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;
}