教科版信息必修一《3.4 加密与解密》课后练习原卷+解析卷

资源下载
  1. 二一教育资源

教科版信息必修一《3.4 加密与解密》课后练习原卷+解析卷

资源简介

《3.4 加密与解密》课后练习解析卷
一、单项选择题
【第1题】
铁路网络购票系统注册界面如下,关于密码提示答案的叙述,正确的是( )
A、每次购票时都要输入核对
B、找回忘记的密码时要核对
C、必须是自己最大的爱好
D、只是一个了解性的调查
答案:B
解析:使用密码提示答案时要核对。
【第2题】
严格的密码策略不包括( )
A、满足一定的长度,比如8位以上
B、同时包含数字,字母和特殊字符
C、系统强制要求定期更改密码
D、用户可以设置空密码
答案:D
解析:严格的密码策略不能设置空密码。
【第3题】
实现信息安全最基本的技术是( )
A、身份认证技术
B、密码技术
C、访问控制技术
D、防病毒技术
答案:B
解析:信息安全最基本的技术是密码技术
【第4题】
保障信息安全的有效做法是( )
A、可以使用个人的出生年月作为常用密码
B、密码的设置要安全,并且定期更换
C、在任何场合使用相同的密码
D、不用防范木马
答案:B
解析:根据题意,B最符合。
【第5题】
小明的生日是1996年6月17日,他家的电话号码是88167545,现在他要为自己的邮箱设置一个密码,下列密码中较安全的是( )
A、19960617
B、88167545
C、xiaoming
D、xm#764$
答案:D
解析:密码设置一般不能包含个人信息,有特殊符号。
【第6题】
下列关于用户密码设置的叙述,正确的是( )
A、密码只能以字母、数字组成
B、密码容易忘记,应该为各种帐户设置相同的密码
C、密码中可以包含$、#等符号
D、密码一旦设定,不能更换
答案:C
解析:密码可以是字母、数字、特殊符号等组成,为了安全各种帐户设置不同的密码且定期更换。
【第7题】
阅读下列实现穷举搜索的自定义函数jiemi()的程序代码:
def jiemi():
d1=datetime.datetime.now() #获取当前系统时间d1
p=int(varin.get()) #获取输入文本框的数字密码
for i in range(0,p+1): #从0循环到正确密码数值
if i==p: #如果密码相同
d2=datetime.datetime.now() #获取当前系统时间d2
d=d2-d1 #取得时间差
#在输出文本框中显示解密用时
varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒")
下列选择错误的是()
A、p=int(varin.get()) 获取输入文本框的数字密码
B、for i in range(0,p+1)不可用for i in range(p+1)代替
C、 if i==p 表示循环值与获取输入文本框的数字密码相同
D、varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒") 在输出文本框中显示解密用时
答案:B
解析:for i in range(0,p+1)可用for i in range(p+1)代替
【第8题】
如图有可视化界面程序中的jiemi()函数中的for循环改为while条件循环:
下列选择正确的是()
A、用while循环时,运算速度降低了
B、用while循环时,运算速度是提高了
C、用while循环时,运算速度没变
D、再将i=i+1改为i+=1,运算速度没变化
答案:A
解析:while循环的循环次数更多,因此运算速度降低了
【第9题】
恺撒密码将明文中的a用d替换,b用e替换,……,z用c替换。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种密码称为加法密码,又称为移位密码。阅读下列程序代码,
def CaesarCipher():
c=mingwen.get("0.0", "end")
b=""
miwen.delete("0.0", "end")
for i in range(len(c)):
if 'a'<=c[i]<='w' or 'A'<=c[i]<='W':
b=b+chr(ord(c[i])①) #生成密文
elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z':
b=b+chr(ord(c[i])②) #生成密文
else:
b=b+c[i]
miwen.insert("0.0",b)  
下列说法正确的是()
A、①的位置填写-3
B、①的位置填写+3、②的位置填写-23,或-26+3
C、①的位置填写-23
D、②的位置填写+3
答案:B
解析:根据题意,往后移三位,因此①的位置填写+3。
【第10题】
恺撒密码建立一个明文字符与密文字符之间的一一映射表,即“密表”,如:
明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:QWERTYUIOPASDFGHJKLZXCVBNM
加密时,A→Q,B→W,…,解密时Q→A,W→B,…,小写字母对应法则也相同,即a→q,b→w,…。阅读下列程序代码,
def NewCaesar(m,n,t):
z='';i=0
while itmp=t[i].upper()
if tmp in m:
if ord(t[i])<=90:
z+=n[m.find(tmp)]
else:
z+=n[m.find(tmp)].lower()
else:
z+=t[i]
i+=1
return z
m='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
n='QWERTYUIOPASDFGHJKLZXCVBNM'
a=input('请输入明文a=')
b=NewCaesar(m,n,a)
print('对应的密文为:',b)
c=NewCaesar(n,m,b)
print('解密后明文为:',c)
下列说法错误的是()
A、NewCaesar(m,n,a)表示根据输入的字符串a,以表n为密匙进行加密
B、if ord(t[i])<=90表示只对数字加密
C、c=NewCaesar(n,m,b)表示根据字符串b,以表m为密匙进行加密
D、m.find(tmp)查找待加密字符在密文中的索引地址
答案:B
解析:字符A、B、C等对应的ASCII值都是小于90的。因此if ord(t[i])<=90表示不只对数字加密
程序填空题
1.根据凯撒密码的加密原理,将下列程序补充完整。
from tkinter import * #导入tkinter模块
root = Tk() #建立一个窗口
root.title("凯撒加密") #设置窗口标题
root.geometry('300x200') #设置窗口大小
def CaesarCipher(): #“加密”按钮激发函数
c=mingwen.get("0.0", "end")[:-1] #获取mingwen对象的内容(明文)
b=""
miwen.delete("0.0", "end") #清空miwen对象的内容
for i in range(len(c)): #获取明文内容的每一个字符,并加密
if 'a'<=c[i]<='w' or 'A'<=c[i]<='W': #判断a~w或A~W间的字母
b=b+chr(ord(c[i])①) #生成密文
elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z': #判断x~z或X~Z间的字母
b=b+chr(ord(c[i])②) #生成密文
else:
③ #字母以外的明文不变
miwen.insert("0.0",b) #在miwen对象中显示结果
Label(root, text='请输入明文', font=('Arial', 10)).pack()
mingwen=Text(root,width=300,height=4)
mingwen.pack()
mingwen.focus_set() #获得焦点
Button(root, text="加密", command=CaesarCipher,relief="solid",width=10).pack()
Label(root, text='凯撒密文', font=('Arial', 10)).pack()
miwen=Text(root,width=300,height=4)
miwen.pack()
root.mainloop()
答案及解析:
①+3 解析:根据凯撒密码加密原理,如果明文在a~w或A~W间的字母,则后移3位
② -23 解析:根据凯撒密码加密原理,如果明文在x~z或X~Z间的字母,则返回字母表开头,按顺序后移3位。
③ b=b+c[i] 解析:凯撒密码只对字母加密,其他字符原样输出。
2.根据凯撒密码的解密原理,将下列程序补充完整。
from tkinter import * # 导入tkinter模块
root = Tk() # 建立一个窗口
root.title("凯撒解密") # 设置窗口标题
root.geometry('300x200') # 设置窗口大小
def CaesarCipher(): # “解密”按钮激发函数
c = miwen.get("0.0", "end")[:-1] # 获取miwen对象的内容(明文)
b = ""
mingwen.delete("0.0", "end") # 清空mingwen对象的内容
for i in range(①): # 获取密文内容的每一个字符,并解密
if 'd' <= c[i] <= 'z' or 'D' <= c[i] <= 'Z': # 判断d~z或D~Z间的字母
b = b+chr(ord(c[i])②) # 生成明文
elif ③: # 判断a~c或A~C间的字母
b = b+chr(ord(c[i])+23) # 生成明文
else:
b = b+c[i] # 字母以外的密文不变
mingwen.insert("0.0", b) # 在mingwen对象中显示结果
Label(root, text='请输入密文', font=('Arial', 10)).pack()
miwen = Text(root, width=300, height=4)
miwen.pack()
miwen.focus_set() # 获得焦点
Button(root, text="解密", command=CaesarCipher, relief="solid", width=10).pack()
Label(root, text='凯撒明文', font=('Arial', 10)).pack()
mingwen = Text(root, width=300, height=4)
mingwen.pack()
root.mainloop()
①len(c) 解析:对每一个密文字符进行遍历,即len(c)
②-3 解析:根据解密原理,如果是d~z或D~Z间的字母,则前移3位。
③ a' <= c[i] <= 'c' or 'A' <= c[i] <= 'C' 解析:如果是a~c或A~C间的字母,则前移至字母表结尾,直至前移3位。《3.4 加密与解密》课后练习
一、单项选择题
【第1题】
铁路网络购票系统注册界面如下,关于密码提示答案的叙述,正确的是( )
A、每次购票时都要输入核对
B、找回忘记的密码时要核对
C、必须是自己最大的爱好
D、只是一个了解性的调查
【第2题】
严格的密码策略不包括( )
A、满足一定的长度,比如8位以上
B、同时包含数字,字母和特殊字符
C、系统强制要求定期更改密码
D、用户可以设置空密码
【第3题】
实现信息安全最基本的技术是( )
A、身份认证技术
B、密码技术
C、访问控制技术
D、防病毒技术
【第4题】
保障信息安全的有效做法是( )
A、可以使用个人的出生年月作为常用密码
B、密码的设置要安全,并且定期更换
C、在任何场合使用相同的密码
D、不用防范木马
【第5题】
小明的生日是1996年6月17日,他家的电话号码是88167545,现在他要为自己的邮箱设置一个密码,下列密码中较安全的是( )
A、19960617
B、88167545
C、xiaoming
D、xm#764$
【第6题】
下列关于用户密码设置的叙述,正确的是( )
A、密码只能以字母、数字组成
B、密码容易忘记,应该为各种帐户设置相同的密码
C、密码中可以包含$、#等符号
D、密码一旦设定,不能更换
【第7题】
阅读下列实现穷举搜索的自定义函数jiemi()的程序代码:
def jiemi():
d1=datetime.datetime.now() #获取当前系统时间d1
p=int(varin.get()) #获取输入文本框的数字密码
for i in range(0,p+1): #从0循环到正确密码数值
if i==p: #如果密码相同
d2=datetime.datetime.now() #获取当前系统时间d2
d=d2-d1 #取得时间差
#在输出文本框中显示解密用时
varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒")
下列选择错误的是()
A、p=int(varin.get()) 获取输入文本框的数字密码
B、for i in range(0,p+1)不可用for i in range(p+1)代替
C、 if i==p 表示循环值与获取输入文本框的数字密码相同
D、varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒") 在输出文本框中显示解密用时
【第8题】
如图有可视化界面程序中的jiemi()函数中的for循环改为while条件循环:
下列选择正确的是()
A、用while循环时,运算速度降低了
B、用while循环时,运算速度是提高了
C、用while循环时,运算速度没变
D、再将i=i+1改为i+=1,运算速度没变化
【第9题】
恺撒密码将明文中的a用d替换,b用e替换,……,z用c替换。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种密码称为加法密码,又称为移位密码。阅读下列程序代码,
def CaesarCipher():
c=mingwen.get("0.0", "end")
b=""
miwen.delete("0.0", "end")
for i in range(len(c)):
if 'a'<=c[i]<='w' or 'A'<=c[i]<='W':
b=b+chr(ord(c[i])①) #生成密文
elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z':
b=b+chr(ord(c[i])②) #生成密文
else:
b=b+c[i]
miwen.insert("0.0",b)  
下列说法正确的是()
A、①的位置填写-3
B、①的位置填写+3、②的位置填写-23,或-26+3
C、①的位置填写-23
D、②的位置填写+3
【第10题】
恺撒密码建立一个明文字符与密文字符之间的一一映射表,即“密表”,如:
明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:QWERTYUIOPASDFGHJKLZXCVBNM
加密时,A→Q,B→W,…,解密时Q→A,W→B,…,小写字母对应法则也相同,即a→q,b→w,…。阅读下列程序代码,
def NewCaesar(m,n,t):
z='';i=0
while itmp=t[i].upper()
if tmp in m:
if ord(t[i])<=90:
z+=n[m.find(tmp)]
else:
z+=n[m.find(tmp)].lower()
else:
z+=t[i]
i+=1
return z
m='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
n='QWERTYUIOPASDFGHJKLZXCVBNM'
a=input('请输入明文a=')
b=NewCaesar(m,n,a)
print('对应的密文为:',b)
c=NewCaesar(n,m,b)
print('解密后明文为:',c)
下列说法错误的是()
A、NewCaesar(m,n,a)表示根据输入的字符串a,以表n为密匙进行加密
B、if ord(t[i])<=90表示只对数字加密
C、c=NewCaesar(n,m,b)表示根据字符串b,以表m为密匙进行加密
D、m.find(tmp)查找待加密字符在密文中的索引地址
程序填空题
1.根据凯撒密码的加密原理,将下列程序补充完整。
from tkinter import * #导入tkinter模块
root = Tk() #建立一个窗口
root.title("凯撒加密") #设置窗口标题
root.geometry('300x200') #设置窗口大小
def CaesarCipher(): #“加密”按钮激发函数
c=mingwen.get("0.0", "end")[:-1] #获取mingwen对象的内容(明文)
b=""
miwen.delete("0.0", "end") #清空miwen对象的内容
for i in range(len(c)): #获取明文内容的每一个字符,并加密
if 'a'<=c[i]<='w' or 'A'<=c[i]<='W': #判断a~w或A~W间的字母
b=b+chr(ord(c[i])①) #生成密文
elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z': #判断x~z或X~Z间的字母
b=b+chr(ord(c[i])②) #生成密文
else:
③ #字母以外的明文不变
miwen.insert("0.0",b) #在miwen对象中显示结果
Label(root, text='请输入明文', font=('Arial', 10)).pack()
mingwen=Text(root,width=300,height=4)
mingwen.pack()
mingwen.focus_set() #获得焦点
Button(root, text="加密", command=CaesarCipher,relief="solid",width=10).pack()
Label(root, text='凯撒密文', font=('Arial', 10)).pack()
miwen=Text(root,width=300,height=4)
miwen.pack()
root.mainloop()
2.根据凯撒密码的解密原理,将下列程序补充完整。
from tkinter import * # 导入tkinter模块
root = Tk() # 建立一个窗口
root.title("凯撒解密") # 设置窗口标题
root.geometry('300x200') # 设置窗口大小
def CaesarCipher(): # “解密”按钮激发函数
c = miwen.get("0.0", "end")[:-1] # 获取miwen对象的内容(明文)
b = ""
mingwen.delete("0.0", "end") # 清空mingwen对象的内容
for i in range(①): # 获取密文内容的每一个字符,并解密
if 'd' <= c[i] <= 'z' or 'D' <= c[i] <= 'Z': # 判断d~z或D~Z间的字母
b = b+chr(ord(c[i])②) # 生成明文
elif ③: # 判断a~c或A~C间的字母
b = b+chr(ord(c[i])+23) # 生成明文
else:
b = b+c[i] # 字母以外的密文不变
mingwen.insert("0.0", b) # 在mingwen对象中显示结果
Label(root, text='请输入密文', font=('Arial', 10)).pack()
miwen = Text(root, width=300, height=4)
miwen.pack()
miwen.focus_set() # 获得焦点
Button(root, text="解密", command=CaesarCipher, relief="solid", width=10).pack()
Label(root, text='凯撒明文', font=('Arial', 10)).pack()
mingwen = Text(root, width=300, height=4)
mingwen.pack()
root.mainloop()

展开更多......

收起↑

资源列表