凯撒密码

加密

解密

传输

什么是凯撒密码

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