Dans un premier temps, la clé est expansée de la sorte à atteindre 256 octets.
Dans un second temps, le flux est crypté octet par octet en réalisant des opérations sur leurs bits avec la clé expansée.
Variable
/******/
S : Tableau[256] De Nul Ou Octet;
I : Entier;
J : Entier;
Variable
/******/
S2 : Octet;
Debut
Pour I=0 JusquA 255 Faire
S[i]=Octet(I);
Fin Pour
J=0;
Pour I=0 JusquA 255 Faire
J=((J+S[i]+CleInitiale[I%TailleCle])&0xFF);
Fin Pour
S2=S[i];
S[i]=S[j];
S[j]=S2;
I=0;
J=0;
/****************************************************************/
Fonction CrypterDecrypter(O : Octet)
/* Objet : Crypte ou decrypte l'octet. */
/****************************************************************/
Variable
/******/
S2 : Octet;
Debut
I=(I+1)&0xFF;
J=(J+S[I])&0xFF;
S2=S[I];
S[I]=S[J];
S[J]=2S;
Retourner O^S[(S[I]+S[J])&0xFF];
Fin Fonction