全民奇迹魔剑士觉醒:设计程序,可对一个英文短电文进行加密、解密处理。

来源:百度文库 编辑:高考问答 时间:2024/04/29 07:55:28
设计程序,可对一个英文短电文进行加密、解密处理。
(源程序名:LJOB4.C 演示程序:TEXTCODE. EXE)
要求:
1、短电文最长80个字符;电文中允许出现所有键盘可键入字符;
2、采用换位法及替代法混合加密,换位位移量、替代偏移量可随机输入;
3、原始电文的输入、加密后文本的输出、是否解密的交互操作、解密后文本的输出均在main函数中实现;
4、换位、替代、解密(包括6位密钥的输入)分别由自定义函数实现;
算法说明:
1)换位加密法:基本思想是变换文本中各字符的位置。例如,如果换位位移量是2且按分组对称换位,则下面字符串的换位关系如图所示:
a b c 1 2 3 * { } [ > X Y Z \0
原始文本串:

换位位移量为2时自然构成了四个字符一个换位组,最后不足一组的不换位;
换位结果为:
c 1 a b 3 * 2 [ > { } X Y Z \0
2) 替代加密法:基本思想是按ASCII码表的顺序,将文本中的字符用码表后面偏移一定位置的字符替代。例如,如果字母字符替代偏移量为2、其它字符替代偏移量为5,在上面换位结果的基础上再进行替代加密的结果如下:
e 6 c d 8 / % 7 [ ” { } Z A B \0
此例在替代时将可键入字符分成了5个组,编码32~64为一组、65~90为二组、91~96为三组、97~122为四组、123~126为五组,其中三组和五组中的字符不替代,而一组、二组和四组中的字符在本组内循环替换。
如上例属于四组的字符’c’ ACSII码值为99,加2后为101,未超过该组的上限122,直接用101对应的字符’e’替代。上例属于一组的字符’>’ACSII码值为62,加5后为67,值超过一组上限64,则需减去33,相当于用该组前面的双引号字符 ” 替代’>’字符。上例中属二组的字符Y和Z,加2后都超过了90,则需减去26,即用该组前面的A替代Y,用B替代Z。
3)密钥是解密的依据,解密必须遵循加密规则进行。如上例,密钥可设计成由6位数字组成:020205 ,其中02表示加密时的换位位移量,中间的02表示字母替代位移量,05表示非字母字符的替代位移量;解密函数必须依据输入的密钥,并按与加密相反的步骤解密。