Skip to content

密码的“秘密语言”——凯撒密码与文本加密工具开发

课题

从“字母移位”到“代码加密”:实现自己的密码工具

教学时间

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')=65ord('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
    python
    def decrypt(text, shift):
        return encrypt(text, -shift)  # 复用加密函数,移位值取负
    
    # 测试:解密“Khoor”,移位3
    print("明文:", decrypt(ciphertext, 3))  # 输出:Hello

三、实践项目:“秘密信件”加密工具开发(25分钟)

基础任务(全员完成):简易加密器

  • 要求:完善代码模板,实现“输入明文和移位值→输出密文”功能,支持大小写字母和标点。
  • 代码框架(需补全encrypt函数):
    python
    def 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分钟)

  1. 工具测试:每组用自己的加密工具加密一句“情报”(如“下午3点操场集合”),移位值保密,将密文传给另一组,对方用解密工具还原,计时比拼。
  2. 问题复盘:讨论“解密失败的原因”(如移位值错误、代码未处理标点),共同优化工具(如增加“提示:包含数字和标点”)。

五、总结与拓展(5分钟)

课堂总结:

  • 凯撒密码核心:字母移位(用ord()chr()实现ASCII码计算);
  • 加密解密逻辑:(编号±移位值) %26,复用函数减少代码重复;
  • 编程价值:将手动加密的“繁琐步骤”转化为“一键操作”,提高效率。

课后拓展:

  1. 给朋友发一封加密邮件(用自己的工具),附上解密方法(移位值);
  2. 思考:“如果移位值是13(ROT13加密),加密和解密有什么关系?”(提示:加密两次等于解密)。

教学理论支撑:

  1. 皮亚杰形式运算阶段理论:通过“字母编号→数学移位→代码实现”的三阶抽象,培养逻辑推理能力(从具体字母到抽象公式)。
  2. 维果茨基最近发展区:从“手动解密”(现有能力)到“代码加密”(潜在能力),通过函数模板和AI调试助手搭建支架,降低跨越难度。
  3. 自我决定理论:“秘密情报”场景满足自主需求(设计加密规则),小组解密挑战满足胜任需求(成功还原情报),增强学习动机。
  4. STEAM教育融合:结合技术(编程实现)、数学(模运算)、历史(凯撒密码)、语言(文本处理),体现跨学科问题解决的价值。