(共20张PPT)
人们的生活已经被密码层层包围,密码对国家、集体、个人的信息安全非常重要,黑客通过种种方法对我们的密码进行攻击。
李磊同学很想知道破解密码背后的原理,从而在设置密码时设置安全级别更高的密码。
探究密码安全问题
————枚举算法的应用
请同学们尝试打开你拿到的三位密码锁
密码位置
当密码正确时,按动按钮,锁被打开
枚举法就是按问题本身的性质,一一列举出该问题所有可能的解,逐一检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。也叫穷举法。
算法思想
算法关键步骤
一一列举
逐一检验
语句格式
算法结构
列举范围
检验条件
注意事项
选择结构
for i in range( )
if( )
循环结构
计算机解决问题的过程
分析问题
枚举范围
检验条件
14700-14799
能被57或67整除
请同学们依据枚举算法的关键步骤,用自然语言描述找出满足条件的五位数的步骤。
设计算法
①______________________
②______________________
说一说
n从14700循环到14799
如果n是57的倍数或者n是67的倍数,就输出n,否则继续下一个数,直到循环结束
设计算法
for n in range(________,_________ )
if( )
print(n)
n%57==0 n%67==0
14700
14800
or
n:五位数的编号
编程实现
for n in range(14700,14800):
if (n%57==0 or n%67==0):
print(n)
调试运行
分析问题
计算机猜测时枚举的范围是什么?
000
001
002
998
999
0-999
分析问题
逐一检验的条件是什么?
计算机猜测的密码和用户设定的密码一致
key:用户设定的三位数字密码
count:猜测次数
n:计算机每次猜测的密码
n==key
设计算法
请同学们完成“任务1.ppt”中的任务
编程实现
请尝试运行“破解三位数字密码程序”
key=int(input("请输入一个三位数字密码:"))
count=0
for n in range(0,1000):
count=count+1
if key==n:
print("计算机猜测该密码所需次数为:",count)
调试运行
请同学们完成任务2:
将“破解三位数字密码锁”txt文件中的代码粘贴至python编译器中运行并输入密码查看结果
调试运行
依据算法和程序,计算机在猜到密码后,会停下来还是会继续把后面的数字枚举完
key=int(input("请输入一个三位数字密码:"))
count=0
for n in range(0,1000):
count=count+1
if key==n:
print("计算机猜测该密码所需次数为:",count)
break #跳出循环
调试运行
依据算法和程序,计算机在猜到密码后,会停下来还是会继续把后面的数字枚举完
key=int(input("请输入一个三位数字密码:"))
count=0
for n in range(0,1000):
count=count+1
if key==n:
print("计算机猜测该密码所需次数为:",count)
五位字母密码锁相对三位数字密码锁的安全性是否提高?为什么?
设定密码时你是否会使用生日、电话号码等?
现在很多密码验证环节需要输入验证码,这是为什么?
1
2
3
不要使用如123456,666666,Iloveyou等弱密码
不要使用生日、电话信息等
不要“一个密码走天下”
在规定长度范围内尽可能设置长一点
多种字符无规律组合(大小写字母、数字、特殊字符等)
3. 可以给自己的密码设计一些算法或规律
娉娉袅袅十三余,豆蔻梢头二月初:ppnn13%,dkstFeb.1st
4. 根据密码重要性等级进行分类管理
“三不”
“四要”
给李磊同学及弱密码使用者的建议:
密码安
全问题
枚举算法
探究——破解“三位数字密码锁”
思考——如何设置密码提高安全性
枚举算法的一般过程
利用枚举算法解决问题
一一列举
逐一检验