资源简介 数据加密与安全导学案知识目标: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()) 展开更多...... 收起↑ 资源预览