应用题
7. 恺撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符,即循环左移3位,对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],共20902个字符。请以10451位循环移位数量,编写中文文本的类恺撒密码加解密方法。
原文字符P,其密文字符C满足如下条件:
C=(P+10451)mod 20902
解密与加密方法一致,满足:
P=(C+10451)mod 20902
标点符号、英文字母不加密。
下面是一段测试文本:
输入(加解密前):全国计算机等级考试二级Python语言程序设计
输出(加解密后):稻驮拎劬逍剥嗔地挂椊嗔Python挚愭儸蝢拫拎
【正确答案】s=input("输入(加解密前):")
d={}
for c in[0x4e00,0x9fa5]:
for i in range(20902):
d[chr(i+c)]=chr((i+10451)%20902+c)
print("输出(加解密后):"+" ".join([d.get(c,c)for c in s]))
【答案解析】