单元四 · 发挥算法的优势

第15课 简单密码易破解

任务场景
任务场景:简单密码易破解

一、学习目标

  • 通过分析密码设定规则,计算破解密码所需的重复判断次数,估算破解密码的大致时间。
  • 进一步认识循环结构,体会利用遍历法解决问题的基本思路,了解密码设置的安全性。

二、情境导入

在日常生活中,有许多地方都需要设置密码,密码保护着我们的个人隐私和信息安全。你知道哪些情况下需要设置密码吗?你设定的密码安全吗?如果破解需要多长时间呢?

三、核心讲解

本课学习路径:

1探究密码的破解次数
2对比不同密码的破解时间
3密码设置的安全性

1.探究密码的破解次数

任务 1:小思家里有一个四位的数字密码锁,家里人忘记了密码,请你想办法帮忙找到密码,思考最多需要尝试多少次?

问题分析:破解尝试的过程是重复的,可以用循环结构来解决。
  1. 确定四位数字密码的组合方式:从 0000 至 9999,每一位有 10 种可能,共 10×10×10×10 = 10 000 种。
  2. 如果用循环结构枚举,最多需要进行 10 000 次尝试才能找到正确密码。
  3. 六位数字密码:10×10×10×10×10×10 = 1 000 000 次。

任务 2:六位「数字+字母」密码,每位有 10+26+26 = 62 种,共 626 ≈ 568 亿次。若加入符号(每位约 94 种),共 946 ≈ 近 7000 亿次。

流程图:穷举破解密码(循环尝试)

开始候选码 = 0000候选码 ≤ 9999?是与正确密码比较不等则候选码 +1继续循环否输出密码 / 结束

2.对比不同密码的破解时间

程序可利用 1 秒内计算机能够枚举的数量,通过换算估计破解时间。不同的计算机系统,1 秒所能枚举的数也会不同。即使计算机具有强大的计算能力,在大量数据面前也需要一定时间;密码位数越多、组成越复杂,破解时间越长。

3.密码设置的安全性

设置密码时,为防止被别人识破或被程序破解,应遵循一些基本规则:

  • 设置密码需要一定的长度和复杂度,例如六位以上数字、字母或字符的组合。
  • 密码最好包含大小写字母、数字和符号。
  • 密码不要与姓名、生日、电话号码等相同。
  • 还可设定输错次数限制、输入验证码等防止被破解。

本课新语法与图形块

本课首次出现:跳出循环 break。穷举思路见课文。

语法图形块说明
break
中断
立刻结束当前循环

弄清以上要点后,再进入下方 Python Online,体验穷举破解密码的思路。

四、动手体验 · Python 3 Online 编程

本课含 2 个程序,请在下拉中切换后分别「载入」运行。

五、课堂总结

  • 通过分析密码设定规则,可以计算出破解密码所需的判断次数,估算破解的大致时间。
  • 依据循环结构的特点,利用遍历所有数据的方法,可以有效地查找数据。
  • 设置密码是日常生活中无法回避的内容,知道密码设置的安全性要求,树立信息安全意识。

六、拓展提升

  • 有一个包括三位数字的密码锁,现在只记得中间一位数字是 3。分析破解这个密码的方法。
  • 如果一个三位数,它每个数位上数字的立方之和等于它本身,那么这个数被称为水仙花数,如 153 = 1³ + 5³ + 3³。请在下方动手体验中切换并运行「找水仙花数」,观察输出;也可对照「两位密码穷举」体会枚举思想。

测评

选出后点「检查」。答错会显示简短说明。

  1. 四位数字密码最多需要尝试多少次?

  2. 破解密码的基本思路是什么?

  3. 下列哪项符合安全设置密码的原则?

本节小结

破解密码要计算组合总数,常用循环遍历;密码越复杂,破解次数越多、时间越长。设置密码要注意长度、复杂度和信息安全。