// RC4 crypt by K-K 2003 #module "RC4" //rc4_init password [,length_of_password] #deffunc rc4_init str,int mref key,32 mref kl,1 if kl==0 :strlen kl,key // RC4 init rc4_x=0 rc4_y=0 dim rc4_dat,256 repeat 256 rc4_dat.cnt=cnt loop b=0 repeat 256 a=rc4_dat.cnt peek c,key,cnt\kl b=b+a+c & 0xff rc4_dat.cnt=rc4_dat.b rc4_dat.b=a loop return // rc4_crypt data, size [,offset] #deffunc rc4_crypt val,int,int mref data,24 ;mref data,48 mref size,1 mref offset,2 // RC4 crypt repeat size rc4_x=rc4_x+1 & 0xff a=rc4_dat.rc4_x rc4_y=rc4_y+a & 0xff b=rc4_dat.rc4_y rc4_dat.rc4_x=rc4_dat.rc4_y rc4_dat.rc4_y=a ; peek c,data,cnt+offset a=a+b & 0xff c=c^rc4_dat.a poke data,cnt+offset,c loop return #global // sample s="message" strlen l,s mes "data:"+s rc4_init "password" rc4_crypt s,l mes "rc4crypt:"+s rc4_init "password" rc4_crypt s,l mes "data:"+s stop