关于密码科学
什么是密码
密码学是关于保护信息安全的科学。它包括两个主要的部分:加密(将信息转换成难以理解的形式)和解密(将加密的信息还原成原始可读的形式)。
密码学有着悠久的历史,早在古埃及和古罗马时期,人们就使用密码来保护军事和政治信息。随着时间的推移,密码学的技术不断进步,变得越来越复杂。
简单的密码例子
-
凯撒密码:这是一种非常古老的密码,通过将字母表中的每个字母移动一定数量的位置来加密信息。例如,如果移动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位得到对应的字母,即为解密结果。
编程实现步骤
-
创建字母列表:
-
我们需要一个包含所有小写字母的列表,以便在后续步骤中查找字母的位置。
-
代码示例:
alphabet = list('abcdefghijklmnopqrstuvwxyz')
-
-
输入加密内容:
-
使用
input()
函数从用户获取加密后的字符串(密文)。可以提示用户输入。 -
代码示例:
ciphertext = input("请输入加密内容: ")
-
-
初始化解密字符串:
-
创建一个空字符串
decrypted
来存储解密后的内容。 -
代码示例:
decrypted = ""
-
-
遍历每个字符:
-
使用
for
循环遍历输入的密文中的每个字符,逐个进行检查和处理。 -
代码示例:
for char in ciphertext:
-
-
检查字符类型:
-
如果是小写字母,进行解密处理。
-
如果是其他字母(如大写字母),输出提示信息。
-
如果是非字母字符(如数字或符号),直接添加到解密字符串中。
-
对于每个字符,使用
if
语句检查它是否是小写字母: -
代码示例:
if char in alphabet: # 小写字母 elif char.isalpha(): # 其他字母 else: # 非字母字符
-
-
解密字符:
-
如果字符是小写字母,使用
index()
方法找到字母在字母列表中的索引。 -
计算解密后字母的索引(向前移动3位),并使用
% 26
确保循环到列表开头。 -
根据解密后的索引从字母列表中获取对应的字母。
-
代码示例:
index = alphabet.index(char) # 找到字母的索引 decrypted_index = (index - 3) % 26 # 向前移3位 decrypted += alphabet[decrypted_index] # 添加解密后的字母
-
-
输出解密结果:
-
完成字符处理后,输出解密后的完整字符串。
-
代码示例:
print("解密后的内容:", decrypted)
-
-
处理非法字符:
-
如果输入了大写字母或其他非法字符,输出提示信息,并选择返回
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学习新篇章!让我们携手并进,在编程的海洋里探索无限可能