(phixonline)-->
with javascript_semantics
constant ENCRYPT = +1,
DECRYPT = -1
function Vigenere(string s, key, integer mode)
string res = ""
integer k = 1, ch
s = upper(s)
for i=1 to length(s) do
ch = s[i]
if ch>='A' and ch<='Z' then
res &= 'A'+mod(ch+mode*(key[k]+26),26)
k = mod(k,length(key))+1
end if
end for
return res
end function
constant key = "LEMON",
s = "ATTACK AT DAWN",
e = Vigenere(s,key,ENCRYPT),
d = Vigenere(e,key,DECRYPT)
printf(1,"Original: %s\nEncrypted: %s\nDecrypted: %s\n",{s,e,d})