rc4
April 23, 2008 in Linux, Mac OS X, Vista, Windows XP by chip
--------------------------------------------------------- FUNCTION rc4encrypt pIn
return base64encode(rc4(pIn, "anUnguessableString"))
END rc4encrypt---------------------------------------------------------
FUNCTION rc4decrypt pIn
return rc4(base64decode(pIn), "anUnguessableString")
END rc4decrypt
---------------------------------------------------------
FUNCTION rc4 pText, pKey
-- initialize
REPEAT WITH i = 0 to 255
put i into S1[i]
END repeat
put 0 into i
REPEAT WITH n = 0 to 255
add 1 to i
IF i > length(pkey) THEN put 1 into i
put chartonum(char i of pKey) into S2[n]
END repeat
put 0 into j
REPEAT WITH i = 0 to 255
put (j + S1[i] + S2[i]) mod 256 into j
put S1[i] into temp
put S1[j] into S1[i]
put temp into S1[j]
END repeat
-- encrypt/decrypt
put 0 into i ; put 0 into j
REPEAT FOR each char c in pText
put chartonum(c) into tChar
put (i + 1) mod 256 into i
put (j + S1[i]) mod 256 into j
put S1[i] into temp
put S1[j] into S1[i]
put temp into S1[j]
put (S1[i] + S1[j]) mod 256 into t
put S1[t] into K
put numtochar(tChar bitXor K) after tOutput
END repeat
return tOutput
END rc4
---------------------------------------------------------