xref: /inferno-os/man/2/crypt-rc4 (revision 7de2b42d50e3c05cc143e7b51284009b5e185581)
CRYPT-RC4 2
NAME
crypt: rc4setup, rc4, rc4skip, rc4back - RC4 encryption
SYNOPSIS
.EX include "ipints.m"; ipints := load IPints IPints->PATH; IPint: import ipints; include "crypt.m"; crypt := load Crypt Crypt->PATH; rc4setup: fn(seed: array of byte): ref RC4state; rc4: fn(state: ref RC4state, buf: array of byte, n: int); rc4skip: fn(state: ref RC4state, n: int); rc4back: fn(state: ref RC4state, n: int);
DESCRIPTION
These functions implement the stream encryption algorithm that is claimed to be equivalent to RSA Security's RC4. It is a pseudo-random number generator with a 256 byte state and a long cycle.

Rc4setup sets the initial seed , which can be any non-zero length, and returns a representation of the initial state of the algorithm, which is used in subsequent calls.

Rc4 runs the generator starting with the given state , and XORs the output of the generator with the first n bytes of buf , updating the state . Rc4 is symmetric and is used both to encrypt and decrypt. Rc4skip skips over bytes (eg, to account for lost transmissions); rc4back runs the generator backwards (eg, to account for retransmissions).

SEE ALSO
crypt-intro (2), crypt-crypt (2)