資源簡介 《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、19960617B、88167545C、xiaomingD、xm#764$答案:D解析:密碼設置一般不能包含個人信息,有特殊符號。【第6題】下列關于用戶密碼設置的敘述,正確的是( )A、密碼只能以字母、數字組成B、密碼容易忘記,應該為各種帳戶設置相同的密碼C、密碼中可以包含$、#等符號D、密碼一旦設定,不能更換答案:C解析:密碼可以是字母、數字、特殊符號等組成,為了安全各種帳戶設置不同的密碼且定期更換。【第7題】閱讀下列實現窮舉搜索的自定義函數jiemi()的程序代碼:def jiemi():d1=datetime.datetime.now() #獲取當前系統時間d1p=int(varin.get()) #獲取輸入文本框的數字密碼for i in range(0,p+1): #從0循環到正確密碼數值if i==p: #如果密碼相同d2=datetime.datetime.now() #獲取當前系統時間d2d=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、①的位置填寫-3B、①的位置填寫+3、②的位置填寫-23,或-26+3C、①的位置填寫-23D、②的位置填寫+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=0while 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+=1return zm='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位?!?.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、19960617B、88167545C、xiaomingD、xm#764$【第6題】下列關于用戶密碼設置的敘述,正確的是( )A、密碼只能以字母、數字組成B、密碼容易忘記,應該為各種帳戶設置相同的密碼C、密碼中可以包含$、#等符號D、密碼一旦設定,不能更換【第7題】閱讀下列實現窮舉搜索的自定義函數jiemi()的程序代碼:def jiemi():d1=datetime.datetime.now() #獲取當前系統時間d1p=int(varin.get()) #獲取輸入文本框的數字密碼for i in range(0,p+1): #從0循環到正確密碼數值if i==p: #如果密碼相同d2=datetime.datetime.now() #獲取當前系統時間d2d=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、①的位置填寫-3B、①的位置填寫+3、②的位置填寫-23,或-26+3C、①的位置填寫-23D、②的位置填寫+3【第10題】愷撒密碼建立一個明文字符與密文字符之間的一一映射表,即“密表”,如:明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ密文:QWERTYUIOPASDFGHJKLZXCVBNM加密時,A→Q,B→W,…,解密時Q→A,W→B,…,小寫字母對應法則也相同,即a→q,b→w,…。閱讀下列程序代碼,def NewCaesar(m,n,t):z='';i=0while 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+=1return zm='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() 展開更多...... 收起↑ 資源列表 教科版信息必修一《3.4 加密與解密》課后練習原卷.docx 教科版信息必修一《3.4 加密與解密》課后練習解析卷.docx 縮略圖、資源來源于二一教育資源庫