Skip to content

字符串的“魔法变身”——文本加密与解密工具

课题

字符串的“拆分与替换”:用Python实现简易密码加密器

教学时间

2课时(90分钟)

课前准备

  • 教师端:电脑(Python 3.10+)、投影仪、多媒体课件(含凯撒密码历史动画、生活加密场景图:如手机密码、快递单信息遮挡)、实物道具(字母卡片A-Z、密码本模板)、“加密任务卡”(写有明文与密文对应示例)。
  • 学生端:电脑(Python环境)、笔记本、双色笔(标注代码逻辑)、加密练习纸(提前打印明文句子)。
  • 教学素材:代码模板(字符串操作基础框架)、奖励徽章(“加密小能手”“逻辑拆解王”)、AI代码小助手(可生成字符串处理示例代码)。

一、导入活动:从“秘密信件”到“代码加密”(15分钟)

活动1:“破译密码”游戏——感知加密逻辑

  • 展示凯撒密码历史故事(动画片段):“古罗马凯撒用‘字母后移3位’传递军事秘密,A→D,B→E……”
  • 发放字母卡片,分组挑战:已知密文“Khoor”,提示“后移3位”,让学生破译明文(答案:“Hello”)。
  • 提问:“如果后移2位,‘A’会变成什么?”引导发现“加密=有规律的字符转换”。

活动2:生活中的加密场景——建立意义联结

  • 展示图片:手机解锁密码(数字加密)、快递单上的“*”(遮挡部分姓名)、聊天软件的“加密对话”。
  • 讨论:“为什么需要加密?”(保护隐私、信息安全),引出课题:“今天用Python让文字‘变身’,制作自己的加密工具”。

二、知识点讲解:字符串操作与加密算法(30分钟)

模块1:字符串——“字符的项链”(10分钟)

  • 核心概念:字符串是用引号包裹的字符序列(如"Hello"),像“穿在一起的珠子项链”,每个字符有固定位置(索引从0开始)。
  • 基础操作演示
    python
    # 示例1:查看字符串长度(有多少颗“珠子”)
    text = "Python"
    print(len(text))  # 输出:6(共6个字符)
    
    # 示例2:字符串索引(找到第n颗“珠子”)
    print(text[0])  # 输出:P(第1个字符,索引0)
    print(text[2])  # 输出:t(第3个字符,索引2)
  • 关键规则:字符串索引从0开始(与生活中“第1个”差1),可通过[索引]精准获取字符。

模块2:字符串的“拆分与替换”——“拆项链”与“换珠子”(10分钟)

  • 比喻split()像“按规律拆项链”(按指定符号分割字符串),replace()像“替换珠子”(把某字符换成另一字符)。
  • 代码示例
    python
    # 示例1:split()——按空格拆分句子为单词
    sentence = "I love Python"
    words = sentence.split(" ")  # 按空格拆分
    print(words)  # 输出:['I', 'love', 'Python']
    
    # 示例2:replace()——替换字符(如遮挡敏感信息)
    phone = "13812345678"
    hidden_phone = phone.replace(phone[3:7], "****")  # 替换中间4位为*
    print(hidden_phone)  # 输出:138****5678

模块3:凯撒加密算法——“字符的位移魔法”(10分钟)

  • 核心逻辑:通过ord()(字符转ASCII码)和chr()(ASCII码转字符)实现字母位移,公式:
    • 加密:密文ASCII = (明文ASCII - 基准ASCII + 偏移量) % 26 + 基准ASCII
      (大写字母基准ASCII=65,小写字母=97,确保位移后仍为字母)
  • 代码框架(以大写字母为例):
    python
    def encrypt(text, shift):
        result = ""
        for char in text:  # 遍历每个字符
            if char.isupper():  # 判断是否为大写字母
                # 计算加密后ASCII码:(原码-65 + 位移) %26 +65
                encrypted_code = (ord(char) - 65 + shift) % 26 + 65
                result += chr(encrypted_code)  # 转成字符拼接到结果
            else:
                result += char  # 非大写字母不加密(如空格、数字)
        return result
    
    # 测试:偏移3位,加密"HELLO"
    print(encrypt("HELLO", 3))  # 输出:KHOOR

三、练习题设计:分层任务+加密实战(25分钟)

基础任务(全员完成):“固定偏移加密器”

  • 要求:完善上述encrypt()函数,支持小写字母加密(补充elif char.islower()逻辑),加密自己的姓名(如“Xiaoming”→偏移3位)。
  • 示例框架(学生补充小写字母部分):
    python
    def encrypt(text, shift):
        result = ""
        for char in text:
            if char.isupper():
                encrypted_code = (ord(char) - 65 + shift) % 26 + 65
                result += chr(encrypted_code)
            # 学生补充:处理小写字母(基准ASCII=97)
            elif char.islower():
                ______  # 填写加密逻辑
            else:
                result += char
        return result
    
    # 测试:加密自己的姓名
    my_name = "______"  # 填写姓名
    encrypted_name = encrypt(my_name, 3)
    print(f"加密后的姓名:{encrypted_name}")

进阶任务(选做):“解密功能”与“自定义偏移”

  • 要求:
    1. 编写decrypt()函数(解密=加密的逆操作,偏移量取负数);
    2. 让用户输入自定义偏移量(如shift = int(input("请输入偏移量:"))),实现灵活加密。

拓展任务(挑战):“密码本”批量加密

  • split()拆分多句明文(如"I like Python\nYou too"),批量加密后保存到变量,模拟“秘密信件”场景。

教师支持:

  • 打开AI代码小助手,学生可提问“小写字母加密公式是什么?”“怎么让输入的偏移量生效?”,AI生成带注释的参考代码(如小写字母加密逻辑:(ord(char) - 97 + shift) % 26 + 97)。

四、讲解与互评:从“加密”到“安全”(15分钟)

  1. 学生展示:选3组投屏代码,演示“加密-解密”全流程(如加密“今天天气好”→密文→解密回原文)。
    • 点评重点:是否处理大小写(逻辑完整性)、偏移量计算是否正确(%26防止超出字母范围)。
  2. 安全讨论:分组讨论“如果偏移量是1,加密后的密码容易被破解吗?”“怎么让加密更安全?”(引导想到“随机偏移量”“混合加密”)。
  3. 互评颁奖:投票选出“最严谨加密器”(无逻辑漏洞)和“最创意加密器”(如加入符号替换),颁发对应徽章。

五、总结与作业(5分钟)

课堂总结:

  • 字符串是“字符项链”,可用len()测长度、[索引]取字符;
  • split()拆分字符串,replace()替换字符,是文本处理的基础工具;
  • 凯撒加密=字符按偏移量位移,核心是ord()chr()的转换(ASCII码运算)。

课后作业:

  1. 给朋友发一条“加密短信”(用自己的工具加密,附偏移量),下次课分享破译过程;
  2. 尝试在加密函数中加入“符号替换”(如把“a”换成“@”,增强安全性)。

教学理论支撑:

  1. 皮亚杰形式运算阶段理论:通过“字母位移”“ASCII码计算”等抽象逻辑任务,发展学生的命题思维与演绎推理能力(从具体加密案例到通用算法)。
  2. 维果茨基最近发展区:代码模板提供“半完成框架”(如预设encrypt()函数结构),AI助手解决具体语法问题,帮助学生在“现有能力(字符串基础)”与“潜在能力(加密算法)”间搭建脚手架。
  3. STEAM教育融合:结合技术(Python字符串操作)、数学(模运算%26)、社会科学(密码学历史与信息安全)、工程(工具功能迭代),让编程成为跨学科问题解决的载体。