k, my 388 with the wrong table (0-9,A-Z,z-a) and added shift instead of subtract comes here:

function vigenere($t,$a,optional $_)
dim $,$w,$p,$k,$l,$z
for $=1 to 256
if $>47&$<58|($>64&$<91)|($>96 & $<123 & $t+$a<>ucase($t+$a))
$l=$l+chr($)
else
$a=join(split($a,chr($)),'')
endif
next
for $k=1 to len($t)
$z=$z+$a
$=substr($t,$k,1)
$w= ($=' ') +$w-$w*instr('!.?',$)
$p=instr($l,$)
if $p
$=len($l)
$=substr($l,1+($+($p-1+(1-2*$_)*($w+instr($l,substr($z,$k,1)))) mod $) mod $,1)
endif
$vigenere=$vigenere+$

next
endfunction


the correct code has to wait.
I messed something up in it and have no time to fix now.


Edited by Lonkero (2004-08-01 05:16 PM)
_________________________
!

download KiXnet