#T139. 增量加密解密

增量加密解密

题目描述

所谓加密就是把明文通过一种算法变为密文的过程,通常明文是我们人类能够读懂的文本,而密文是一些“杂乱无章”的文本。比如明文I like reading通过加密后变为密文I lxcu rnwdffto。 增量加密是一种简单的加密方法。增量加密时需要密匙,密匙为字母AZ的一种排序,字母在排序中的序号为该字母对应的值,比如字典序排列ABCD...Z作为密匙时, A的值为0B的值为1C的值为2,.....,Z的值为25。 默认的密匙为字典序排列ABCD...Z在加密文本时,需要用到两个连续字符的值,具体加密方法如下:

1.所有的非字母字符在加密总保持不变,字母字符被另外一个字母字符代替。

2.加密字符时,如果一个字符的前驱字符不是字母,则认为其前驱字符为字符A

3.小写字母和大写字母的加密方法相同,如果明文中为大写字母,则加密后仍为大写字母,如果明文中为小写字母,则加密后为小写字母

4.加密时记当前字符为x,其前驱字符为p,则分别计算xp的值之差,这个差模26后作为密文字符对应的值。 如密匙为QWERTYUIOPASDFGHJKLZXCVBNM,明文字符I的前驱字符如果不是字母,则认为其前驱为字符A,字符IA在密匙中的值分别为710,其差模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