必修1 3.4 加密与解密 课件(共12张PPT)

文档属性

名称 必修1 3.4 加密与解密 课件(共12张PPT)
格式 zip
文件大小 871.6KB
资源类型 试卷
版本资源 教科版(2019)
科目 信息技术(信息科技)
更新时间 2020-09-30 10:12:02

图片预览

文档简介

(共12张PPT)
教科版高中信息技术
第3单元
认识数据
必修1
数据与计算
3.4
加密与解密
课堂导入
不少人有密码被盗的经历,这往往导致个人信息泄露,甚至是财产损失。你是否有使用账号、密码的经
验?请与同学交流、讨论并上网搜索表3.4.1中列出的密码盗窃方式,思考相应的防盗措施,填入表中。
盗窃方式
防盗窃措施
肩窥方式
我们可以在输入密码时遮挡自己的操作过程,防止别人偷看密码信息;或者确定环境安全后再进行操作。
字典破解
暴力破解
表3.4.1
密码盗窃与防盗分析表
密码不要用生日,姓名及拼音缩写,手机号、简单数字组合,单词、身份证号,用户ID等。
同时包含大小写字母、数字、特殊符号,不少于8个字符
肩窥攻击是指通过窥看用户的键盘输入,鼠标移动等方式来获取用户口令。
字典破解就是利用人们平时常用的词、句破译,如果说暴力破解是一个一个的尝试,那么字典破译就是利用人们习惯用人名、地名或者常见的词语设置成密码的习惯进行破译。字典破译速度比暴力破译更快但是有时候密码设置中包含了没有字典库中的词句就无法破解出来了,因此有好的字典是关键。
肩窥攻击、字典破解和暴力破解
密码是指用来核对用户ID已验证用户就是本人的一组字符。
数据安全性测试
设置安全密码
请同学们运行“数据安全性测试.py”,运行并测试穷举搜索一个5位、7位和9位的数字密码,分别需要多长时间,然后填写表3.4.2.
密码长度
密码值
破解时间
5位
12567
1.0毫秒
98302
15.6毫秒
7位
1248906
101.006毫秒
9784302
425.524毫秒
9位
132657980
5秒156.794毫秒
321809456
12秒544.216毫秒
根据你实践的结果研究下面的python代码,想一想,如果密码中还有字母,破解的时间会变成吗?请于同学们讨论创建安全密码的方法。
def
jiemi():
d1=datetime.datetime.now()
#获取当前系统时间d1
p=int(varin.get())
#获取输入文本框的数字密码
for
i
in
range(p+1):
#从0循环到正确密码数值
if
i==p:
#如果密码相同
d2=datetime.datetime.now()
#获取当前系统时间d2
d=d2-d1
#取得时间差
#在输出文本框中显示解密用时
varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒")
varin和varout是程序中的两个文本框对象,分别用来接收输入的密码和显示解析密码所需时间。
get和set是文本框的两个方法,分别用于接收文本框中的数据和在文本框中显示输出数据。
1、使用长度不少于8个字符的密码。密码长度越长越不容易被破解。
2、在可能的情况下,尽量使用字母、数字和特殊字符(如¥,#)相结合的密码。
3、不要使用电话号码、身份证号或生日等信息作为密码。
4、不要使用整个用户ID或用户ID的一部分作为密码。
5、不要使用字典中能找到的词语作为密码,即使是字母次序颠倒过来的常用词语也不可以。
创建安全密码的一般技巧
为保障数据安全,还可采取限制登录次数、使用验证码、使用用户的具有排他性的自然特征(如指纹、人脸等)作为身份验证依据等措施。


1、放字典破解:设置安全密码,不用生日、姓名及拼音缩写、手机号、
简单数字组合、单词、身份证号、用户ID等。
2、防暴力破解:设置安全密码,要同时包含大小写字母、数字、特殊符号,不少于8个字符。
3、为提高运算速度,尽可能采用计数循序for语句代替条件循环while语句,
4、用复合赋值语句(i+=1)代替简单赋值语句(i=i+1)
巩固练习
1、将有可视化界面程序中的jiemi()函数中的for循环改为while条件循环,观察运算速度是提高了还是降低了。
密码值
破解用时
for循环
while循环
i+=1
i=i+1
500000
46.8
毫秒
78.0毫秒
93.601毫秒
1000000
62.401毫秒
126.801毫秒
117.601毫秒
5000000
218.4毫秒
327.601毫秒
358.8毫秒
10000000
452.801毫秒
652.6.2毫秒
718.601毫秒
50000000
1秒969.207毫秒
3秒78.538毫秒
31秒613.626毫秒
from
tkinter
import
import
datetime
root
=
Tk()
root.geometry('300x100')
def
jiemi():
d1=datetime.datetime.now()
#获取当前系统时间d1
p=int(varin.get())
#获取输入文本框的数字密码
i=0
while
ii+=1
d2=datetime.datetime.now()
d=d2-d1
varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒")
frm
=
Frame(root)
#left
frm_L
=
Frame(frm)
Label(frm_L,
text='输入密码:',
font=('Arial',
10)).pack()
Label(frm_L,
text='破解用时:',
font=('Arial',
10)).pack()
frm_L.pack(side=LEFT)
#right
frm_R
=
Frame(frm)
varin=StringVar()
varout=StringVar()
Entry(frm_R,
textvariable
=
varin).pack()
Entry(frm_R,
textvariable
=
varout).pack()
frm_R.pack(side=RIGHT)
frm.pack()
Button(root,
text="破解",
command=jiemi,relief="solid",width=10).pack()
root.mainloop()
破解程序
THANKS