1、3.4 加密与解密 教学目标:教学目标: 理解数据加密与解密和概念及原理。 会分析生活中由密码引起的数据安全问题,理解对数据进行保护的意义。 了解数据加密的历史 会用Python实现简单的加密算法 恺撒密码的加密与解密算法。 教学重难点教学重难点 【教学重点】 恺撒密码的加密与解密算法。 【教学难点】 用穷举法破解密码。 恺撒密码的加密与解密算法。 一、引入一、引入 学生预习,阅读第学生预习,阅读第77页页“任务一任务一 解开网站账号被盗之谜解开网站账号被盗之谜”之之 “活动活动1 防范防范盗窃盗窃行为行为”,填写第,填写第78页的表页的表3.4.1。 盗窃方式防盗窃措施 肩窥方式 字典破解
2、暴力破解 一、引入一、引入 学生预习,阅读第学生预习,阅读第77页页“任务一任务一 解开网站账号被盗之谜解开网站账号被盗之谜”之之 “活动活动1 防范防范盗窃盗窃行为行为”,填写第,填写第78页的表页的表3.4.1。 盗窃方式防盗窃措施 肩窥方式 我们可以在输入密码时遮挡自己的操作过程,防止别人偷看密码信息; 或者确定环境安全后再进行操作 字典破解 密码不要用生日、姓名及拼音缩写、手机号、简单数字组合、单词、身 份证号、用户Id 暴力破解 同时包含大小写字母、数字、特殊符号,不少于8个字符 二、密码二、密码 1、密码的定义:、密码的定义: 密码是指用来核对用户密码是指用来核对用户ID以验证用户
3、就是本人的一组字符。以验证用户就是本人的一组字符。 2、设置安全密码、设置安全密码 运行运行“数据安全性测试数据安全性测试.py”并测试穷举搜索一个并测试穷举搜索一个5位、位、7位和位和9位位 的数字密码,分别需要多长时间,填写表的数字密码,分别需要多长时间,填写表3.4.2。 密码长度密码长度密码值密码值破解时间破解时间 5位位 125671.0毫秒毫秒 9830215.6毫秒毫秒 7位位 9位位 实现穷举搜索的自定义函数jiemi()的程序代码如下: def jiemi(): d1=datetime.datetime.now() #获取当前系统时间d1 p=int(varin.get()
4、#获取输入文本框的数字密码 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)+毫秒) 【比一比】当然,我们也可以编写无可视化界面的程【比一比】当然,我们也可以编写无可视化界面的程 序,程序更简单。序,程序更简单。 3、创建安全密码的一般技巧:、创建安全密码的一般技巧: 1)使用长度不少于)使用长度不少
5、于8个字符的密码。密码越长越不容易被破解。个字符的密码。密码越长越不容易被破解。 2)在可能的情况下,尽量使用字母、数字和特殊符号相结合的密码。)在可能的情况下,尽量使用字母、数字和特殊符号相结合的密码。 3)不要使用电话号码、身份证号或生日作为密码。)不要使用电话号码、身份证号或生日作为密码。 4)不要使用整个用户)不要使用整个用户ID或用户或用户ID的一部分作为密码。的一部分作为密码。 5)不要使用字典中能找到的词语作为密码,即使是字母顺序颠倒过)不要使用字典中能找到的词语作为密码,即使是字母顺序颠倒过 来的常用词语也不可以。来的常用词语也不可以。 练习练习 试编写程序,破解超级密码试编写
6、程序,破解超级密码可能包含数字、大小写英文字母和键面可能包含数字、大小写英文字母和键面 特殊字符(不含空格共有特殊字符(不含空格共有32个键面特殊字符)在内的个键面特殊字符)在内的4位字符组成的密码,位字符组成的密码, 每个字符的每个字符的ASCII码值在码值在33至至126之间。将运行用时记入下表:之间。将运行用时记入下表: “超级密码超级密码(字符串字符串).py”和和“超级密码超级密码(列表列表).py”,比较两种算法的快慢,比较两种算法的快慢 密码值密码值 破解用时破解用时 超级密码超级密码(字符串字符串).py超级密码超级密码(列表列表).py !876 AbY5 Z$*m z)0
7、?x= 三、加密三、加密 学生自学,阅读第学生自学,阅读第79页页“任务二任务二 让数据让数据 隐身隐身”之之“活动活动1 古老的古老的 隐身术隐身术”,填写表,填写表3.4.3,引入,引入“加密加密”话题。话题。 时间加密方式 683年拆字法。将明文中的文字进行组合生成新的字,即为密文,比如“十二月”合起来为“青” 北宋 代码法。北宋进士曾公亮曾搜集了40个常用军事短语,然后对其进行顺序编码:一、请弓;二、 请箭;三、请刀;四、请甲;五、请枪旗;六、请锅幕;七、请马;八、请衣赐;九、请粮料四十、 战小胜。军队出征前,指挥机关将用上述短语编码的密码本发给将领,并约定用一首不含重 复文字的40字
8、五言律诗与密码相对应 公元前五世 纪 移位法。希罗多德(Herodotus)的历史中记载了公元前五世纪,希腊城邦和波斯帝国发 生多次冲突和战争。这些战争中希腊城邦中广泛使用了移位法进行加密处理战争通讯信息, 使波斯帝国难以获得希腊城邦的军事情报,也就无法提前做军事部署。希腊城邦用来传输军 事信息、命令的每段文字都有固定的字数,解密者手中会有一份文字移位说明。解密者拿到 密文后,根据文字移位说明进行解密,从而破解其中的军事命令或消息 古罗马时期 高卢战记有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代 密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母
9、B换作字母E。 因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码 第二次世界 大战 密码机。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着 非常重要的作用 加密就是将原始信息(数据)隐匿起来,使之在缺少特殊信息(数据)加密就是将原始信息(数据)隐匿起来,使之在缺少特殊信息(数据) 时不可读。原始信息(数据)称为明文,加密后的信息(数据)称为时不可读。原始信息(数据)称为明文,加密后的信息(数据)称为 密文。将密文还原成明文的过程称为解密(或解码)。密文。将密文还原成明文的过程称为解密(或解码)。 学生讨论:举例身边常见的数据加密?学生讨论:举例
10、身边常见的数据加密? 四、加法密码四、加法密码 加法密码又被称为移位密码。在加法密码算法中,明文中的所有加法密码又被称为移位密码。在加法密码算法中,明文中的所有 字母都在字母表上向后或向前按照一个固定数目进行偏移生被替字母都在字母表上向后或向前按照一个固定数目进行偏移生被替 换成密文。换成密文。 恺撒密码只是简单地将明文中的每一个字母用字母表中该字母后恺撒密码只是简单地将明文中的每一个字母用字母表中该字母后 的第的第3个字母替换。例如,将明文中的个字母替换。例如,将明文中的a用用d替换,替换,b用用e替换,替换, 以此类推,以此类推,X变成变成A,Y变成变成B,z用用c替换。像恺撒密码这样,明
11、替换。像恺撒密码这样,明 文中的所有字母都在字母表上向后(或向前)按照一个固定数目文中的所有字母都在字母表上向后(或向前)按照一个固定数目 进行偏移后被替换成密文,这种密码称为加法密码,又称为移位进行偏移后被替换成密文,这种密码称为加法密码,又称为移位 密码。密码。 对应代码如下: def CaesarCipher(): #Button按钮激发函数 c=mingwen.get(0.0, end) #获取Text组件mingwen的明文内容 b= miwen.delete(0.0, end) #清空Text组件miwen的内容 for i in range(len(c): #获取明文内容的每一个
12、字母,并加密 if a=ci=w or A=ci=W: #判断aw或AW间的字母 b=b+chr(ord(ci)+3) #生成密文 elif x=ci=z or X=ci=Z: #判断xz或XZ间的字母 b=b+chr(ord(ci)-23) #生成密文 else: #字母以外的明文内容不变 b=b+ci miwen.insert(0.0,b) #在Text组件miwen中显示结果 程序运行效果如下程序运行效果如下 【试一试】请写出恺撒密码的解密算法。【试一试】请写出恺撒密码的解密算法。 c=input(请输入密文请输入密文:) b= for i in range(0,len(c): #获取密
13、文内容的每一个字母,并破解获取密文内容的每一个字母,并破解 if d=ci=z or D=ci=Z: #判断判断d-z或或D-Z间的字母间的字母 b=b+chr(ord(ci)-3) #破解密文破解密文 elif a=ci=c or A=ci=C: #判断判断a-c或或A-C间的字母间的字母 b=b+chr(ord(ci)+23) #破解密文破解密文 else: b=b+ci #字母以外的密文不变字母以外的密文不变 print(你的明文为你的明文为:+b) 【想一想】恺撒密码的安全性能如何?【想一想】恺撒密码的安全性能如何? 可以说,保密性能极差。将明文字符前移或后移一个固定的长度可以说,保密
14、性能极差。将明文字符前移或后移一个固定的长度d(称为密钥),(称为密钥), 即使改变即使改变d的值,也最多只需的值,也最多只需25次尝试次尝试d的值,就能破解。的值,就能破解。 了解密码安全与加密、解密的技术能够帮助我们保护个人隐私。同时,我们也要了解密码安全与加密、解密的技术能够帮助我们保护个人隐私。同时,我们也要 从自己做起,遵守相关法律和必要的道德规范,共同维护健康、良好的数据环境。从自己做起,遵守相关法律和必要的道德规范,共同维护健康、良好的数据环境。 练习练习 编程:考虑到恺撒密码的安全性极差,应对算法进行改进。一种可行的改进方式是,建 立一个明文字符与密文字符之间的一一映射表,即“密表”,如: 明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文:QWERTYUIOPASDFGHJKLZXCVBNM 加密时,AQ,BW,,解密时QA,WB,小写字母对应法则也相同,即 aq,bw,。原先恺撒密码只有一个“密钥”,现在好比有25个“密钥”,这样保密性 能大大提升,破解难度大大增加。另外,这个“密表”也是可以按需要改变的。 你能写出这种改进的恺撒密码的加密与解密算法吗?试一试。 再见!
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。