ちょっと書いてみた

すごいH本にシーザー暗号がのっていたので、
もっと安全を期すため(?)に多表式暗号を作れるようにしました。

import Data.Char
key = [1, 2, 3, 4, 5, 6]
decode = code' (map (* (-1)) key)
code = code' key
code' ky = fst . foldr (\ c (str,n) -> (chr (shift c n ky) : str , n+1)) ([],0) . map ord
shift c n ky = c + (ky !! (n `mod` length ky))

Haskellだと短くかけるなー。