Appearance
密码的“秘密语言”——凯撒密码与文本加密工具开发
课题
从“字母移位”到“代码加密”:实现自己的密码工具
教学时间
2课时(90分钟)
课前准备
- 教师端:电脑(Python 3.10+)、投影仪、多媒体课件(含凯撒密码历史动画:凯撒用字母移位传递军事指令)、字母表海报(A-Z编号0-25)、加密解密流程图。
- 学生端:电脑(Python环境)、练习纸(字母移位对照表)、密码本(记录自己设计的加密规则)、小组任务卡(“秘密情报传递”场景)。
- 教学素材:代码模板(
caesar_cipher.py)、加密挑战题库(不同难度的明文与密文)、AI调试助手(可提示“移位计算错误”等问题)。
一、导入活动:“秘密情报”游戏——感知加密逻辑(15分钟)
活动1:“字母移位”猜谜——理解加密原理
- 教师出示密文:“Khoor Zruog”,提示规则:“每个字母往后移3位(A→D,B→E……)”,引导学生解密(答案:“Hello World”)。
- 分组尝试:给每组一段密文(如“Ldpdvw”),用字母表海报手动解密,记录“移位→对应字母”的步骤。
活动2:凯撒密码历史故事——建立任务意义
- 播放动画:古罗马凯撒用字母移位加密军事指令,防止敌人截获情报。
- 提问:“如果现在要给好朋友发一句不想被别人看懂的话,怎么用类似方法加密?”引出“编程实现自动加密”的任务。
二、知识点讲解:加密工具的“核心逻辑”(30分钟)
模块1:凯撒密码原理——字母的“数学移位”(10分钟)
- 核心规则:将字母按顺序编号(A=0,B=1……Z=25),加密时每个字母编号+移位值(如移位3:A→3→D),超过25则循环(如Z=25+3=28→28-26=2→C)。
- 数学公式:
- 加密:
(字母编号 + 移位值) % 26 - 解密:
(字母编号 - 移位值) % 26 - 举例:E(4)移位3→4+3=7→H;C(2)移位5→2+5=7→H。
- 加密:
模块2:Python实现加密——字符与ASCII码(15分钟)
- 关键函数:
ord(字符):获取字符的ASCII码(如ord('A')=65,ord('a')=97);chr(数字):将ASCII码转回字符(如chr(68)='D')。
- 加密函数代码演示:python
def encrypt(text, shift): result = "" for char in text: # 遍历每个字符 if char.isupper(): # 大写字母 # 计算新ASCII码:(原码-65 + shift) %26 +65(65是'A'的ASCII码) new_code = (ord(char) - 65 + shift) % 26 + 65 result += chr(new_code) elif char.islower(): # 小写字母 new_code = (ord(char) - 97 + shift) % 26 + 97 # 97是'a'的ASCII码 result += chr(new_code) else: # 非字母(空格、标点)不变 result += char return result # 测试:加密“Hello”,移位3 plaintext = "Hello" ciphertext = encrypt(plaintext, 3) print("密文:", ciphertext) # 输出:Khoor
模块3:解密函数——反向移位(5分钟)
- 解密是加密的逆过程,只需将
shift改为-shift:pythondef decrypt(text, shift): return encrypt(text, -shift) # 复用加密函数,移位值取负 # 测试:解密“Khoor”,移位3 print("明文:", decrypt(ciphertext, 3)) # 输出:Hello
三、实践项目:“秘密信件”加密工具开发(25分钟)
基础任务(全员完成):简易加密器
- 要求:完善代码模板,实现“输入明文和移位值→输出密文”功能,支持大小写字母和标点。
- 代码框架(需补全
encrypt函数):pythondef encrypt(text, shift): # 学生补全加密逻辑(参考讲解示例) result = "" # (此处填写循环和条件判断代码) return result # 交互部分 message = input("请输入要加密的内容:") shift = int(input("请输入移位值(1-25):")) encrypted = encrypt(message, shift) print(f"加密后的密文:{encrypted}")
进阶任务(选做):加密解密一体化工具
- 增加菜单选择(1=加密,2=解密),输入密文和移位值可还原明文:python
choice = input("请选择功能(1=加密,2=解密):") if choice == "1": # 调用encrypt函数 else: # 调用decrypt函数
创意任务(挑战):“多规则加密”
- 设计混合规则(如“字母移位+替换特定字符”,如A→D且空格→#),让工具更难破解,撰写规则说明文档。
教师支持:
- 提供“ASCII码速查表”(A-Z:65-90,a-z:97-122);
- AI调试助手可分析学生代码报错(如“忘记处理小写字母”),生成修改建议(如“添加
elif char.islower()分支”)。
四、项目展示与“情报战”游戏(15分钟)
- 工具测试:每组用自己的加密工具加密一句“情报”(如“下午3点操场集合”),移位值保密,将密文传给另一组,对方用解密工具还原,计时比拼。
- 问题复盘:讨论“解密失败的原因”(如移位值错误、代码未处理标点),共同优化工具(如增加“提示:包含数字和标点”)。
五、总结与拓展(5分钟)
课堂总结:
- 凯撒密码核心:字母移位(用
ord()和chr()实现ASCII码计算); - 加密解密逻辑:
(编号±移位值) %26,复用函数减少代码重复; - 编程价值:将手动加密的“繁琐步骤”转化为“一键操作”,提高效率。
课后拓展:
- 给朋友发一封加密邮件(用自己的工具),附上解密方法(移位值);
- 思考:“如果移位值是13(ROT13加密),加密和解密有什么关系?”(提示:加密两次等于解密)。
教学理论支撑:
- 皮亚杰形式运算阶段理论:通过“字母编号→数学移位→代码实现”的三阶抽象,培养逻辑推理能力(从具体字母到抽象公式)。
- 维果茨基最近发展区:从“手动解密”(现有能力)到“代码加密”(潜在能力),通过函数模板和AI调试助手搭建支架,降低跨越难度。
- 自我决定理论:“秘密情报”场景满足自主需求(设计加密规则),小组解密挑战满足胜任需求(成功还原情报),增强学习动机。
- STEAM教育融合:结合技术(编程实现)、数学(模运算)、历史(凯撒密码)、语言(文本处理),体现跨学科问题解决的价值。