|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:凯撒密码是一种通过位移加密的方法,对 26 个(大小写)字母进行位移加密,比如下方是正向位移 6 位的字母对比表:
明文字母表如下
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
密文字母表如下版权属于:
GHIJKLMNOPQRSTUVWXYZABCDEFghijklmnopqrstuvwxyzabcdef
所以,如果给定加密的明文是:
I love FishC?
那么程序加密后输出的密文便是:
O rubk LoynI&H
text = input("请输入需要加密的密文(只支持英文字母):")
number = int(input("请输入移动的位数:"))
dz = 0 #当与位数相加时 >z
DZ = 0
secret = ""
if number > 0 :
for i in text:
if i != " ":
if ord(i) + number > ord('z'):
dz = ord('a') + ((ord(i) + number) - ord('z'))
secret = secret + chr(dz)
elif ord(i) + number > ord('z'):
DZ = ord('A') + ((ord(i) + number) - ord('Z'))
secret = secret + chr(DZ)
else:
secret = secret + chr(ord(i) + number)
else:
secret = secret + " "
else:
for i in text:
if i != " ":
if ord(i) + number < ord('a'):
dz = ord('z') - (ord('a') - (ord(i) + number) ) + 1
secret = secret + chr(dz)
elif ord(i) + number < ord('A'):
DZ = ord('Z') - (ord('A') - (ord(i) + number) ) + 1
secret = secret + chr(DZ)
else:
secret = secret + chr(ord(i) + number)
else:
secret = secret + " "
print(secret)
想请各位大佬帮忙看一下 为什么我这串代码输入:I love FishC 和 -6
得到的是:] fipy ZcmbW
而不是:C fipy ZcmbW |
|