
小明编写了一个凯撒加密算法:输入明文(由大写字母、小写字母和数字字符组成)和密钥Key∈[0,25],将明文的每个字符往右循环移动Key位得到密文并输出。若输入密文和密钥Key,则输出明文。
(1)如下表为明文是'1aZ',key=8,获得密文'9iH'的加密过程:
明文字符 | '1' | 'a' | 'Z' |
key | 8 | ||
密文字符 | '9' | 'i' | 'H' |
(2)主程序代码如下:
select=input("加密还是解密?加密输入1;解密输入0:")
ifselect=="1":
sp=input("请输入明文P:")
key=int(input("请输入密钥:"))
sc=encrypt(sp,key)
print(sc)
else:
sc=input("请输入密文C:")
key=int(input("请输入密钥:"))
sp=decrypt(sc,key)
print(sp)
主程序根据输入1或0,决定应当执行加密/解密程序代码,这体现了以下哪个基本算法结构
(3)函数change(ch,key)的功能:将字符ch替代成循环往右移动key位后的字符。
defchange(ch,key): #传入参数字符ch和密钥key,返回转换后的字符
m=ord(ch)
if ch>='a' and ch<='z':
m=m-ord('a')+key
if m>=26:
m-=26
m+=ord('a')
elif ch>='A' and ch<='Z':
m=
if m>=26:
m-=26
m+=ord('A')
else:
m=(m-ord('0')+key)%10+ord('0')
return
请在划线处①②填入合适代码。
(4)算法的程序代码如下,请在划线处填入合适代码。
def encrypt(code,key): #对明文code,使用密钥key进行加密
code_new=""
for i in range(len(code)):
ch=code[i]
code_new+=
return code_new
def decrypt(code,key):
#解密算法代码略

同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

