On Sat, 16 Feb 2002 12:01:21 -0800, Samy Kamkar wrote: > > It's RC4, so far in 182 bytes, accepts a hex key (e.g., a0b1c2) in > $ARGV[0] and reads input from <>: > sub > f{@s[$x,$y]=@s[$y,$x]}@k=map{hex}pop=~/../g;$y=($y+$k[$_%@k]+$s[$x=$_])%256,f > for@t=@s=0..255;$x=$y=0;$x++,$y+=$s[$x%=256]%256,f,print > chr($s[($s[$x]+$s[$y])%256]^ord)for<>=~/./g > > so: perl -e 'print"blah"' | perl -e '...' a0b1c2 > would print out the ASCII value of \xe8\x9c\xc0\xcb > > So, any of you have any ideas of shortening it?
I can't seem to get it below 160 characters. This is split arbitrarily at 40 characters; it will not work until joined. sub f{@s[$x,$y]=@s[($y+=$s[$x])%=@s,$x]; $s[$x]+$s[$y]}@k=pop=~/../g;$y+=hex$k[$x %@k],f,$x++for@s=0..255;$x=$y=0;$x++,$x% =@s,print chr($s[f()%@s]^ord)for<>=~/./g -- Rocco Caputo / [EMAIL PROTECTED] / poe.perl.org / poe.sf.net