INNER CODE UNIT · C
j
dmitrystu/sboot_stm32 · src/arc4.c:28
j = (j + S[i] + ((uint8_t*)key)[i & 0x0F]) & 0xFF;
uint8_t _t = S[i];
S[i] = S[j];
S[j] = _t;
}
si = 0;
sj = 0;
}
void arc4_crypt(void *out, const void *in) {
uint8_t _t;
_t = S[++si];
sj = sj + _t;
S[si] = S[sj];
S[sj] = _t;
*(uint8_t*)out = *(uint8_t*)in ^ S[(S[si] + S[sj]) & 0xFF];
}