#T139. 增量加密解密
增量加密解密
题目描述
所谓加密就是把明文通过一种算法变为密文的过程,通常明文是我们人类能够读懂的文本,而密文是一些“杂乱无章”的文本。比如明文I like reading通过加密后变为密文I lxcu rnwdffto。 增量加密是一种简单的加密方法。增量加密时需要密匙,密匙为字母A到Z的一种排序,字母在排序中的序号为该字母对应的值,比如字典序排列ABCD...Z作为密匙时, A的值为0,B的值为1,C的值为2,.....,Z的值为25。 默认的密匙为字典序排列ABCD...Z在加密文本时,需要用到两个连续字符的值,具体加密方法如下:
1.所有的非字母字符在加密总保持不变,字母字符被另外一个字母字符代替。
2.加密字符时,如果一个字符的前驱字符不是字母,则认为其前驱字符为字符A
3.小写字母和大写字母的加密方法相同,如果明文中为大写字母,则加密后仍为大写字母,如果明文中为小写字母,则加密后为小写字母
4.加密时记当前字符为x,其前驱字符为p,则分别计算x和p的值之差,这个差模26后作为密文字符对应的值。 如密匙为QWERTYUIOPASDFGHJKLZXCVBNM,明文字符I的前驱字符如果不是字母,则认为其前驱为字符A,字符I和A在密匙中的值分别为7和10,其差模26的结果为23,密匙中值为23的字符为B。
输入数据
输入第一行是一个整数n,表示总共有n行输入,每行输入描述如下:
1.第一个单词是ENCRYPT,则表示接下来输入的是明文,ENCRYPT和明文之间至少有一个空格。
2.第一个单词是DECRYPT,则表示接下来输入的是密文,DECRYPT和密文之间至少有一个空格。
3.第一个单词是CIPHER,则表示接下来输入的是密匙,CIPHER和密匙之间至少有一个空格。
4.密匙可能由空白字符、标点符合和字母构成,密匙中除非字母字符外,仅含有26个英文字符,并且字母表中的每个字母出现一次。如果密匙不符合要求,则使用默认的密匙。
5在指令CIPHER之后所有的加密解密均使用新的密匙(密匙不合法则使用默认密匙)。
6.输入中可能有不合法输入。
所有输入中,字母可以是大写也可以是小写。明文,密文和密匙最长不超过10000个字符。
输出数据
对输入中的一行,输出一行。具体如下:
1.第一个单词是ENCRYPT,则输出加密后的密文,具体输出格式见样例
2.第一个单词是DECRYPT,则输出对应的明文,具体输出格式见样例。
3.第一个单词是CIPHER,如果密匙符合要求,则输出“Good cipher,"后再输出新的密匙。如果密匙不符合要求,则输出Bad cipher,Using default."
如果输入不合法,则输出Command not understood.“
样例输入
11
ENCRYPT I like reading and listening to music.
CIPHER qwertyuiopasdfghjklzxcvbnm
ENCRYPT I like reading and listening to music.
DECRYPT B ohas zmoeckj qgg ohtznvpkj xt hiyvg.
ENCRIPT This won't work!
CIPHER qAZwSXedCRfv tgbyhnujmikolp
ENCRYPT I like reading and listening to music.
DECRYPT M ooaf coiebkk qhh oorcmvskk vv jltng.
CIPHER qwertyuopasdfghjklzxcvbnm
ENCRYPT I like reading and listening to music.
DECRYPT I lxcu rnwdfft anq lxkbljvft tv miyqu.
样例输出
RESULT: I lxcu rnwdfft anq lxkbljvft tv miyqu.
Good cipher. Using QWERTYUIOPASDFGHJKLZXCVBNM.
RESULT: B ohas zmoeckj qgg ohtznvpkj xt hiyvg.
RESULT: I like reading and listening to music.
Command not understood .
Good cipher. Using QAZWSXEDCRFVTGBYHNUJMIKOLP
RESULT: M ooaf coiebkk qhh oorcmvskk vv jltng.
RESULT: I like reading and listening to music.
Bad cipher. Using default.
RESULT: I lxcu rnwdfft anq lxkbljvft tv miyqu.
RESULT: I like reading and listening to music