在日常生活当中,我们经常需要对数据进行加密,比如,聊天软件中的聊天信息等等,这些私密的信息都需要进行加密后才能在网络当中传输,以免放置信息的泄露,常用的加密算法有很多,我们今天要学习的这种加密方式叫做凯撒密码,那么,什么是凯撒密码呢?我们先用一个视频来了解一些什么是凯撒密码:

视频:什么是凯撒密码

1.ASCII码的概念

在开始之前,我们先来了解一下ASCII码,我们都知道在计算机当中,所有的数据都是用二进制来进行表示的,因此,如果我要存储字符,那么我们就要将字符进行编码,因此ASCLL码就此诞生,ASCII码是一种通用规范,因此,无论对于任何编程语言来说,都可以使用ASCII码

视频:什么是ASCII

ASCII码有一个表格,展示了字符与数字的对应,表格如下:

image-20201127143404347

如上表所示,不同的字符对应不同的数字,比如大写字母“A”对应的数字的十进制就是65,那么在计算机当中65就是A的ASCII码编码。

2.字符串和ASCII码的转换

在Python中也提供了相应的函数用于将ASCII码与字符串进行相互的转换

ord()    #ord()函数,括号当中接受一个字符长度的字符串,返回一个整型,也就是字符的ASCII码
chr()    #chr()函数,括号当中接受一个整数(0-255),返回这个整数对应的字符串

我们可以使用print打印出相应的结果看看

char_number=ord("A")
print("A的ASCLL码是:{}".format(char_number))

char_a=chr(66)
print("66所对应的字符为:{}".format(char_a))

# A的ASCLL码是:65
# 66所对应的字符为:B

有了这两个函数之后,我们就能来看看这个问题了,这个问题也是实现凯撒密码的关键性问题

输入一个字符,输出这个字符向后移动13个字符的结果

char_a=input("请输入字符:")
if len(char_a)!=1:
    print("字符数超过限制")
else:
    char_number=ord(char_a)
    new_char=chr(char_number+13)
    print("移动后的字符为:",new_char)

# 请输入字符:a
# 移动后的字符为: d

如果输入的字符移动三位后,超过了字符z该怎么办?

char_a=input("请输入字符:")
char_number=ord(char_a)
new_char=chr(char_number+13)    #计算移动后的结果

if len(char_a)!=1:
    print("字符数超过限制")
elif char_number+13>122:
    new_number=ord(new_char)
    new_number=new_number-122+96
    print("移动后的字符为:",chr(new_number))
else:
    print("移动后的字符为:",new_char)

    
# 请输入字符:z
# 移动后的字符为: m

3. 凯撒密码的实现

那么,有了以上这些铺垫之后,我们就可以自己来实现凯撒密码加密器了,由于用户输入的字符串,当中可能有大写的字母也有小写的字母,我们先将用户的字符全部改成大写在进行加密操作

upper()    #使用upper()函数可以将字符串中的所有字符都转换成大写

那么,根据我们上面的分析,我们就可以写出凯撒加密的小程序了

input_char=input("请输入要加密的字符串:")

#将字符串全部转换为大写
input_char=input_char.upper()

#建立空字符串保存结果
output=""

for i in range(len(input_char)):
    x=input_char[i]        #提取单个字符
    value=ord(x)+13        #获取字符转换后的ASCII码
    if value>90:        #如果超过了Z,则需要做的转换,90刚好是Z的ASCII码
        value=value-90+64
        output+=chr(value)
    else:
        output+=chr(value)

print("加密后的字符:",output);

# 请输入要加密的字符串:zcvzcvzssdd
# 加密后的字符: MPIMPIMFFQQ

4.综合练习

1.请写出解密小程序,按照向右移动13位的原则,输入密文,得到明文(明文都是小写)

可以使用:lower()转换成小写字符

# 示例
# 请输入明文:MPI
# 解密后的字符: zcv

2.输入一个明文,明文包含大小写,按照向右移动13位的原则转换成凯撒密码后,依然保持大小写不变

提示:将大小写分开处理

# 示例
# 请输入明文:ADFADadfadf
# 解密后的字符: NQSNQnqsnqs
最后修改:2024 年 08 月 08 日
如果觉得我的文章对你有用,请随意赞赏