凯撒密码


加密
解密
传输
什么是凯撒密码
A
B
C
D
C
加密前:
加密前:
加密
D
C
E
F
什么是ASCLL码
视频:ASCLL码
ASCLL码是一种通用规范,因此,无论对于任何编程语言来说,都可以使用ASCLL码

字符串和ASCLL码的转换
ord()
- 括号当中接受一个字符长度的字符串,
- 返回一个整型,也就是字符的ASCLL码
char_number=ord("A")
print("A的ASCLL码是:{}".format(char_number))
# A的ASCLL码是:65
chr()
- 括号当中接受一个整数(0-255)
- 返回这个整数对应的字符串
char_a=chr(66)
print("66所对应的字符为:{}".format(char_a))
# 66所对应的字符为:B
输入一个字符,输出这个字符向后移动13个字符的结果
请输入字符:a
移动后的字符为: d
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该怎么办?
# 请输入字符:z
# 移动后的字符为: m
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
凯撒密码的实现
upper()
可以将字符串中的所有字符都转换成大写
a="adasdfsd"
a.upper()
#ADASDFSD'
第一:取出一个字符,将字符后移13位
第二:判断移动后的字符是否超出Z,超出则做出相应的处理
第三:将移动后的结果放入到结果当中
第四:输出最后结果
input_char=input("请输入要加密的字符串:")
#将字符串全部转换为大写
input_char=input_char.upper()
#建立空字符串保存结果
output=""
for i in range(len(input_char)):
x=input_char[i] #提取单个字符
value=ord(x)+13 #获取字符转换后的ASCLL码
if value>90: #如果超过了Z,则需要做的转换,90刚好是Z的ASCLL码
value=value-90+64
output+=chr(value)
else:
output+=chr(value)
print("加密后的字符:",output);
# 请输入要加密的字符串:zcvzcvzssdd
# 加密后的字符: MPIMPIMFFQQ
综合练习
1.请写出解密小程序,按照向右移动13位的原则,输入密文,得到明文(明文都是小写)
可以使用:lower()转换成小写字符
# 示例
# 请输入明文:MPI
# 解密后的字符: zcv
input_char=input("请输入明文:")
#将字符串全部转换为大写
input_char=input_char.upper()
#建立空字符串保存结果
output=""
for i in range(len(input_char)):
x=input_char[i] #提取单个字符
value=ord(x)-13 #获取字符转换后的ASCLL码
if value<65: #如果超过了A,则需要做的转换
value=91-(65-value)
output+=chr(value)
else:
output+=chr(value)
print("解密后的字符:",output.lower());
# 请输入明文:MPI
# 解密后的字符: zcv
2.输入一个明文,明文包含大小写,按照向右移动13位的原则转换成凯撒密码后,依然保持大小写不变
提示:将大小写分开处理
# 示例
# 请输入明文:ADFADadfadf
# 解密后的字符: NQSNQnqsnqs
input_char=input("请输入明文:")
#建立空字符串保存结果
output=""
for i in range(len(input_char)):
x=input_char[i]
value=ord(x)+13
if value>90 and value<65: #如果有大写字母超过Z
value=value-90+64
output+=chr(value)
if value>122: #如果有小写字符超过z
value=value=122+96
output+=chr(value)
output+=chr(value) #没有超过则直接加入
print("加密后的字符:",output);
# 请输入明文:ADFADadfadf
# 解密后的字符: NQSNQnqsnqs
凯撒密码
By yang he
凯撒密码
- 344