Python主题案例:科学实验-解密

关于密码科学

什么是密码

密码学是关于保护信息安全的科学。它包括两个主要的部分:加密(将信息转换成难以理解的形式)和解密(将加密的信息还原成原始可读的形式)。
密码学有着悠久的历史,早在古埃及和古罗马时期,人们就使用密码来保护军事和政治信息。随着时间的推移,密码学的技术不断进步,变得越来越复杂。

简单的密码例子

  • 凯撒密码:这是一种非常古老的密码,通过将字母表中的每个字母移动一定数量的位置来加密信息。例如,如果移动3位,那么”A”就会变成”D”。

  • 替换密码:在这种密码中,每个字母被另一个字母替换,但每个字母在整条信息中始终被同一个字母替换。

这里插播一条粉丝福利,如果你正在学习Python或者有计划学习Python,想要突破自我,对未来十分迷茫的,可以点击这里获取最新的Python学习资料和学习路线规划(免费分享,记得关注)  

解密的主题编程

实验介绍

罗马共和国的恺撒曾经用一种特殊的加密方式和他的将军们联系,他是这样做的:把一个单词里的每一个字母都向后移,比如A向后移3位,变成D,B就变成E,以此类推。等到X的时候,会变成A,Y变成B,Z变成C。请你编写一段脚本,在输入加密内容后,能够还原出加密前的内容。

python实现介绍

1.理解本次的加密原理

  • 把一个单词里的每一个字母都向后移,比如A向后移3位,变成D,B就变成E,以此类推。等到X的时候,会变成A,Y变成B,Z变成C>把一个单词里的每一个字母都向后移,比如A向后移3位,变成D,B就变成E,以此类推。等到X的时候,会变成A,Y变成B,Z变成C

2.得到解密方法

  • 对单词的每个字母进行解密,规则是加密的反向,也就是找到该字母再字母表中所在的位置,往前移3位得到对应的字母,即为解密结果。

编程实现步骤

  1. 创建字母列表:

    • 我们需要一个包含所有小写字母的列表,以便在后续步骤中查找字母的位置。

    • 代码示例:

      alphabet = list('abcdefghijklmnopqrstuvwxyz')
      
  2. 输入加密内容:

    • 使用input()函数从用户获取加密后的字符串(密文)。可以提示用户输入。

    • 代码示例:

      ciphertext = input("请输入加密内容: ")
      
  3. 初始化解密字符串:

    • 创建一个空字符串decrypted来存储解密后的内容。

    • 代码示例:

      decrypted = ""
      
  4. 遍历每个字符:

    • 使用for循环遍历输入的密文中的每个字符,逐个进行检查和处理。

    • 代码示例:

      for char in ciphertext:
      
  5. 检查字符类型:

    • 如果是小写字母,进行解密处理。

    • 如果是其他字母(如大写字母),输出提示信息。

    • 如果是非字母字符(如数字或符号),直接添加到解密字符串中。

    • 对于每个字符,使用if语句检查它是否是小写字母:

    • 代码示例:

      if char in alphabet:  # 小写字母 elif char.isalpha():  # 其他字母 else:  # 非字母字符
      
  6. 解密字符:

    • 如果字符是小写字母,使用index()方法找到字母在字母列表中的索引。

    • 计算解密后字母的索引(向前移动3位),并使用% 26确保循环到列表开头。

    • 根据解密后的索引从字母列表中获取对应的字母。

    • 代码示例:

      index = alphabet.index(char)  # 找到字母的索引 decrypted_index = (index - 3) % 26  # 向前移3位
      decrypted += alphabet[decrypted_index]  # 添加解密后的字母
      
  7. 输出解密结果:

    • 完成字符处理后,输出解密后的完整字符串。

    • 代码示例:

      print("解密后的内容:", decrypted)
      
  8. 处理非法字符:

    • 如果输入了大写字母或其他非法字符,输出提示信息,并选择返回None或其他标志以停止解密。

    • 代码示例:

      print(f"非法字符:{char},只允许小写字母。") return None
      

完整代码示例

结合上述步骤,以下是完整的代码:

复制def decrypt_caesar(ciphertext):
    alphabet = list('abcdefghijklmnopqrstuvwxyz')  # 创建小写字母列表
    decrypted = ""

    for char in ciphertext:  # 遍历每个字符
        if char in alphabet:  # 检查小写字母
            index = alphabet.index(char)  # 找到字母的索引
            decrypted_index = (index - 3) % 26  # 向前移3位
            decrypted += alphabet[decrypted_index]  # 获取解密后的字母
        elif char.isalpha():  # 检查是否为其他字母
            print(f"非法字符:{char},只允许小写字母。")
            return None  # 返回None表示非法字符
        else:
            decrypted += char  # 保留非字母字符

    return decrypted

# 输入加密内容
ciphertext = input("请输入加密内容: ")
# 解密并输出结果
result = decrypt_caesar(ciphertext)
if result:
    print("解密后的内容:", result)

结果测试

最后,我精心筹备了一份全面的Python学习大礼包,完全免费分享给每一位渴望成长、希望突破自我现状却略感迷茫的朋友。无论您是编程新手还是希望深化技能的开发者,都欢迎加入我们的学习之旅,共同交流进步!

🌟 学习大礼包包含内容:

Python全领域学习路线图:一目了然,指引您从基础到进阶,再到专业领域的每一步学习路径,明确各方向的核心知识点。

超百节Python精品视频课程:涵盖Python编程的必备基础知识、高效爬虫技术、以及深入的数据分析技能,让您技能全面升级。

实战案例集锦:精选超过100个实战项目案例,从理论到实践,让您在解决实际问题的过程中,深化理解,提升编程能力。

华为独家Python漫画教程:创新学习方式,以轻松幽默的漫画形式,让您随时随地,利用碎片时间也能高效学习Python。

互联网企业Python面试真题集:精选历年知名互联网企业面试真题,助您提前备战,面试准备更充分,职场晋升更顺利。

👉 立即领取方式:只需【点击这里】,即刻解锁您的Python学习新篇章!让我们携手并进,在编程的海洋里探索无限可能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值