#include <libc.h>
#include <mp.h>
#include <libsec.h>
void setupRC4state(RC4state *s, uchar *seed, int slen)
void rc4(RC4state *s, uchar *data, int dlen)
void rc4skip(RC4state *s, int nbytes)
void rc4back(RC4state *s, int nbytes)
This is an algorithm alleged to be Rivest's RC4 encryption function. It is a pseudo-random number generator with a 256 byte state and a long cycle. The input buffer is XOR'd with the output of the generator both to encrypt and to decrypt. The seed, entered using setupRC4state , can be any length. The generator can be run forward using rc4 , skip over bytes using rc4skip to account lost transmissions, or run backwards using rc4back to cover retransmitted data. The RC4state structure keeps track of the algorithm.