单元四 · 发挥算法的优势
第15课 简单密码易破解

一、学习目标
- 通过分析密码设定规则,计算破解密码所需的重复判断次数,估算破解密码的大致时间。
- 进一步认识循环结构,体会利用遍历法解决问题的基本思路,了解密码设置的安全性。
二、情境导入
在日常生活中,有许多地方都需要设置密码,密码保护着我们的个人隐私和信息安全。你知道哪些情况下需要设置密码吗?你设定的密码安全吗?如果破解需要多长时间呢?
三、核心讲解
本课学习路径:
1探究密码的破解次数
2对比不同密码的破解时间
3密码设置的安全性
1.探究密码的破解次数
任务 1:小思家里有一个四位的数字密码锁,家里人忘记了密码,请你想办法帮忙找到密码,思考最多需要尝试多少次?
问题分析:破解尝试的过程是重复的,可以用循环结构来解决。
- 确定四位数字密码的组合方式:从 0000 至 9999,每一位有 10 种可能,共 10×10×10×10 = 10 000 种。
- 如果用循环结构枚举,最多需要进行 10 000 次尝试才能找到正确密码。
- 六位数字密码:10×10×10×10×10×10 = 1 000 000 次。
任务 2:六位「数字+字母」密码,每位有 10+26+26 = 62 种,共 626 ≈ 568 亿次。若加入符号(每位约 94 种),共 946 ≈ 近 7000 亿次。
流程图:穷举破解密码(循环尝试)
2.对比不同密码的破解时间
程序可利用 1 秒内计算机能够枚举的数量,通过换算估计破解时间。不同的计算机系统,1 秒所能枚举的数也会不同。即使计算机具有强大的计算能力,在大量数据面前也需要一定时间;密码位数越多、组成越复杂,破解时间越长。
3.密码设置的安全性
设置密码时,为防止被别人识破或被程序破解,应遵循一些基本规则:
- 设置密码需要一定的长度和复杂度,例如六位以上数字、字母或字符的组合。
- 密码最好包含大小写字母、数字和符号。
- 密码不要与姓名、生日、电话号码等相同。
- 还可设定输错次数限制、输入验证码等防止被破解。
本课新语法与图形块
本课首次出现:跳出循环 break。穷举思路见课文。
| 语法 | 图形块 | 说明 |
|---|---|---|
break | ![]() | 立刻结束当前循环 |
弄清以上要点后,再进入下方 Python Online,体验穷举破解密码的思路。
四、动手体验 · Python 3 Online 编程
本课含 2 个程序,请在下拉中切换后分别「载入」运行。
正在载入 Python 3 Online
正在载入编程环境…
五、课堂总结
- 通过分析密码设定规则,可以计算出破解密码所需的判断次数,估算破解的大致时间。
- 依据循环结构的特点,利用遍历所有数据的方法,可以有效地查找数据。
- 设置密码是日常生活中无法回避的内容,知道密码设置的安全性要求,树立信息安全意识。
六、拓展提升
- 有一个包括三位数字的密码锁,现在只记得中间一位数字是 3。分析破解这个密码的方法。
- 如果一个三位数,它每个数位上数字的立方之和等于它本身,那么这个数被称为水仙花数,如 153 = 1³ + 5³ + 3³。请在下方动手体验中切换并运行「找水仙花数」,观察输出;也可对照「两位密码穷举」体会枚举思想。
测评
选出后点「检查」。答错会显示简短说明。
四位数字密码最多需要尝试多少次?
破解密码的基本思路是什么?
下列哪项符合安全设置密码的原则?
本节小结
破解密码要计算组合总数,常用循环遍历;密码越复杂,破解次数越多、时间越长。设置密码要注意长度、复杂度和信息安全。
