資源簡介 數據加密與安全導學案知識目標:1、了解數據安全的必要性,區分口令與密碼。2、了解密碼、秘鑰概念3、了解常用加密算法(凱撒密碼是重點)4、區分對稱與非對稱密碼體制課前自學:1、通常說的無線網絡密碼;從銀行ATM機取款時需要輸入的密碼;從嚴格意義上講,這里的密碼應該稱為 口令2、密碼通常是指按特定的編碼規則,對通信雙方的數據信息進行從 明文 到 密文 變換的一種技術方法。就是把用公開的、標準的信息編碼表示的信息,通過一種 變換手段將其變為通信雙方外其他人所不能讀懂的信息編碼,這種獨特的信息編碼算法就是密碼3、密碼最早起源于 古希臘,通常是 密碼算法 的簡稱,它由加密算法 和解密算法組成4、秘鑰 是指在密碼算法中引進的控制參數,對一個算法采用不同的參數值,其解密結果就不同。加密算法中的控制參數稱加密密鑰,解密碼算法中的控制參數稱解密密鑰5、簡單加密算法有替代密碼 換位密碼,簡單異或密碼,凱撒密碼屬于:替代密碼替代密碼 的基本思想是將明文中的每個位置的字符用其他字符替代換位密碼 將明文中的字符通過一定的規則重新排列簡單異或加密:明文與密鑰異或運算,解密則對密文用同一密鑰進行異或運算6、根據加密密鑰(通常記為Ke)和解密密鑰(通常記為Kd)的關系,密碼體制可以分為 對稱 密碼體制(即 ke=kd) 和 非對稱密碼體制(即 ke=kd)。 DES屬于 對稱密碼體制 ,RAS 屬于 非對稱密碼體制課中探究:(1)、請猜一猜以下三組字符串的原文是什么?(按小組分開猜)1、RQ VXQGDB 2、SR WYRHEC 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 ZX Y Z A B C D E F G H I J K L M N O P Q R S T U V W1、解密方法:每個字符在按字母表順序向左移3位解密密鑰是:-32、解密方法:每個字符在按字母表順序向左移4位解密密鑰是:-43、 解密方法:按【2 8 7 1 4 0 5 3 6】位置重排中 傳 信 泄 輸 被 露 在 息0 1 2 3 4 5 6 7 8解密密鑰是:2 8 7 1 4 0 5 3 6給出解密方法并較對答案:1、ON SUNDAY (改動過)2、ON SUNDAY (改動過)3、信息在傳輸中被泄露(二)、初識密碼 (以下內容PPT展示)密碼的概念:明文:密文:秘鑰:加密算法與解密算法第1,2題的算屬于 替代密碼,又稱 凱撒密碼 ,第三題屬于:換位密碼(三):1、換位密碼法:1、逆序:l[::-1] 或l[-1::-1](def encrypt(code,key):s=[]for i in range(len(key)): #循環key列表的長度t=key[i] #列表里的值s.append(code[t]) # code中第t個數加入到s中return scode="除了奮斗別無選擇"key=[5, 3, 0, 7, 4, 6, 2, 1]result=encrypt(code,key)print(result)#['無', '斗', '除', '擇', '別', '選', '奮', '了'])2、一般換位密碼設計加密密碼(以凱撒密碼為例)1、凱撒密碼是一種簡單的置換密碼,通過替代方法來實現加密碼。學生活動:明文:ON SUNDAY加密過程:用正常順序的明文字母表右移3個字母得到密文密鑰:+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明 X Y Z A B C D E F G H I J K L M N O P Q R S T U V Wd 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25得出:e[i]=chr((ord(c[i])-97+m) %26+97) 與e[i]=chr((ord(c[i])-65+m) %26+65)(自定義函數開始encrpt()自定義函數結束輸入明文c與移位長度密文b置初值為空c是否遍歷完成當前元素c是否是小寫b=b+chr((t-97+m_length) % 26+97)遍歷下一個b=b+chr((t-65+m_length)% 26+65)b=b+c輸出密文b當前元素c是否是大寫是是否否是否t=ord(char))2、流程圖填空:(def main():#code=input("請輸入加密字符串:")code="ON SUNDAY"mlength=int(input("請輸入移位長度:"))result=encrypt(code,mlength)print(result)if __name__=='__main__':main()) (def encrypt(code,m_length):b=""for char in code: #獲取明文內容的每一個字符,并加密t=ord(char)if'a'<=char<='z':#判斷a~z字母b=b+chr((t-97+m_length) % 26+97)elif 'A'<=char<='Z':b=b+chr((t-65+m_length) % 26+65)else:b=b+char#字母以外的明文不變return b)代碼3、三:對稱與非對稱密碼體制1、模型:1、12、簡單異或算法:異或運算,是一種邏輯運算,其數學符號為“ ”。運算時要求把參與運算的數轉換為二進制數再進行按位運算。如果兩個值不相同,那么異或結果為1。如果兩個值相同,那么異或結果為0。異或運算具有如下特點:0 0=0,0 1=1,1 0=1,1 1=001001000 10110001=1111100111111001 10110001=01001000例1:已知字符“H“的8位二進制為01001000,密鑰A的8位二進制為01000001,則異或結果為:_00001001__換成10進制為_9____代碼如下,請填空,并運行驗證(#方法2:直接用PYTHON的”^”#此結果為10進制c1=”H”key=”A”print(ord(c1)^ord(A))) (#方法1:原理型def xor(a,b): #每位異或return (int(a)+int(b)) %2code="01001000"key="01000001"c=""for i in range(len(code)):c+=str(xor(code[i],key[i]))print(c))綜合異或代碼:(def xor(a,b):#每位異或return (int(a)+int(b)) %2def ten2two(a):# 10進制轉二進制w=""while a>0:w=w+str(a%2)a//=2while len(w)<8:#不足補成8位w=w+'0'return w[::-1]#倒一下def MXor(w1,w2):# 字符串異或w=""for i in range(len(w1)):w=w+str(xor(w1[i],w2[i]))return w)代碼:(if __name__=="__main__":code="Hello"key="1011000110110001101100011011000110110001"w1,s2=[],""for i in code:w1.append(ord(i)) #取Asciifor i in w1:s2=s2+ten2two(i) #轉二進制c=MXor(s2,key) #異或print(c))課堂練習:1、若用簡單異或對明文轉換的ASCII碼的二進制“11001100”進行加密,得到密文為“01000011”,則密鑰可能為:BA、11110000 B、10001111 C、01001100 D、010000112、已知明文為code="除了奮斗別無選擇",采用換位密碼法進行加密,結果為:”別選無擇了奮斗除”,請問加密密鑰與解密密鑰分別為:4, 6, 5, 7, 1, 2, 3, 0與7,4,5,6,0,2,1,3(def encrypt(c):b=""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])+3)#生成密文elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z': #判斷x~z或X~Z間的字母b=b+chr(ord(c[i])-23)#生成密文else:b=b+c[i] #字母以外的明文不變return bdef main():#code=input("請輸入加密字符串:")code="GOOD STUDENT"result=encrypt(code)print(result)if __name__=='__main__':main())3、已知明文為“Good Student”,采用凱撒密碼法進行加密,加密碼的過程為:Ci=Ek(Pi)=(Pi+5),則可得密文為:Ltti Xyzijsy4、自主完成(def encrypt(code,m_length):b=""for char in code:#獲取明文內容的每一個字符,并加密t=ord(char)#取Ascii碼if 'a'<=char<=chr(ord('z')-m_length) or 'A'<=char<=chr(ord('Z')-m_length):b=b+chr(t+m_length)elif chr(ord('z')-m_length+1)<=char<='z' or chr(1+ord('Z')-m_length)<=char<='Z' :b=b+chr(t-(26-m_length))else:b=b+char#字母以外的明文不變return bdef main():#code=input("請輸入加密字符串:")code="GOOD STUDENT"mlength=int(input("請輸入移位長度:"))result=encrypt(code,mlength)print(result)if __name__=='__main__':main()) 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫