12 lines
461 B
Text
12 lines
461 B
Text
fcn encipher(src,key,is_encode){
|
|
upperCase:=["A".."Z"].pump(String);
|
|
src=src.toUpper().inCommon(upperCase); // only uppercase
|
|
key=key.toUpper().inCommon(upperCase).pump(List,"toAsc");
|
|
|
|
const A="A".toAsc();
|
|
klen:=Walker.cycle(key.len()); // 0,1,2,3,..,keyLen-1,0,1,2,3, ...
|
|
src.pump(String,'wrap(c){ i:=klen.next(); c=c.toAsc();
|
|
(A + ( if(is_encode) c - A + key[i] - A;
|
|
else c - key[i] + 26 ) % 26).toChar()
|
|
});
|
|
}
|