原始加密解密
【题目】相传最早使用密文传递信息的古罗马军队。他们对明文中字母进行移位处理。比如:A
向后移 2 位,就是C
,B
就变为D
,… 最后,Y
变成A
,Z
变成B
(当到达最后一个字母时,回绕到第一个字母)
收到文件的一方只要用同样的方法,只是改为向前移动就可以了。
当然,为了增加强度,可以一字一密。就是有一个密码本,比如 (2,3,7)。 它表示,遇到第一个字母后移2位,第2个字母后移3位,第3个字母后移7位,第4个字母后移2位,… 如此循环。
已知了密码本,请编程使用一字一密法实现文本信息的加密和解密。
只对大写字母加密,其它符号原样输出。
这对 haskell 没多少难度。因为haskell的惰性特征,可以构造一个无限长度的密码本,以避开仔细控制何时循环使用的烦恼。
import Data.Char (ord, chr)
encode :