3.4 加密与解密
本节内容按2课时设计。
第一课时
教学重难点
【教学重点】会分析生活中由密码引起的数据安全问题,理解对数据进行保护的意义。
【教学难点】用穷举法破解密码。
【教学过程】
一、引入
1.学生预习,阅读第77页“任务一解开网站账号被盗之谜”之“活动1  防范‘盗窃’行为”,填写第78页的表3.4.1。
2.教师检查,并评讲填写情况,引出数据安全、密码的话题。
表3.4.1 密码盗窃与防盗分析表
二、密码
密码是指用来核对用户ID以验证用户就是本人的一组字符。
活动2设置安全密码
打开教科书配套资源中的“数据安全性测试.py”,运行并测试穷举搜索一个5位、7位和9位的数字密码,分别需要多长时间,填写表3.4.2。(详见配套资源“数据安全性测试(有界面).fld”和“数据安全性测试(有界面).py”)
表3.4.2 穷举搜索密码需要的时间
实现穷举搜索的自定义函数jiemi()的程序代码如下:
def jiemi():
d1=w()    #获取当前系统时间d1
p=())            #获取输入文本框的数字密码
for i in range(0,p+1):        #从0循环到正确密码数值
if i==p:                  #如果密码相同
d2=w()    #获取当前系统时间d2
d=d2-d1                #取得时间差
#在输出文本框中显示解密用时
varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒")
程序运行效果如下:
【比一比】当然,我们也可以编写无可视化界面的程序,程序更简单。(详见配套资源“数据安全性测试(无界面).py”)
程序运行效果如下:
请比较有可视化界面与无可视化界面两个程序运算的快慢,将最快的结果填入表3.4.2。
【算一算】
你的电脑1秒最多能试探大约多少个整数密码?
【做一做】
1.有可视化界面程序中的jiemi()函数中的for循环改为while条件循环:
古代传递信息的方式
运算速度是提高了,还是降低了?
再将i=i+1改为i+=1,运算速度有无变化?
你能得出什么结论?
2.为计算1秒最多能试探多少个整数密码,某同学认为用原来的jiemi()函数要试探性多次输入p的值,结果不稳定不精确,于是他将jiemi()函数修改为jiemi2():
结果会怎么样?为什么?
【想一想】
1.如果密码包含数字和大小写英文字母,那么5位、7位、9位密码的最大循环次数分别是多少次?估算你的电脑分别需要多少时间试探?
2.如果密码包含数字、大小写英文字母和键面特殊字符(不含空格共有32个键面特殊字符),那么5位、7位、9位密码的最大循环次数分别是多少次?估算你的电脑分别需要多少时间试探?
三、小结
(防字典破解)设置安全密码,不用生日、姓名及拼音缩写、手机号、简单数字组合、单词、身份证号、用户Id等等。
(防暴力破解)设置安全密码,要同时包含大小写字母、数字、特殊符号,不少于8个字符
为提高运算速度,尽可能采用计数循环for语句代替条件循环while语句,复合赋值语句
(如i+=1)代替简单赋值语句(i=i+1)
四、练习
试编写程序,破解超级密码——可能包含数字、大小写英文字母和键面特殊字符(不含空格共有32个键面特殊字符)在内的4位字符组成的密码,每个字符的ASCII 码值在33至126之间。
种算法的快慢。
第二课时
教学重难点
【教学重点】恺撒密码的加密与解密算法。 【教学难点】恺撒密码的加密与解密算法。
【教学过程】
一、引入
1.学生预习,阅读第
79页“任务二  让数据 ‘隐身’”之“活动1  古老的‘隐身术’”,填写表3.4.3,引入“加密”话题。
2.教师检查,并评讲填写情况,引出数据安全、数据加密话题。
表3.4.3 数据加密技术的发展