#栅栏凯撒密码
def encode(string,number):
for i in string:
if 'a' <= i <= 'z':
print(chr(ord('a')+(ord(i)-ord('a')+space2)%26),end = '')
elif 'A' <= i <= 'Z':
print(chr(ord('A')+(ord(i)-ord('A')+space2)%26),end = '')
else:
print(i,end = '')
def decode(string,number):
for i in string:
if 'a' <= i <= 'z':
print(chr(ord('a')+(ord(i)-ord('a')-space2)%26),end = '')
elif 'A' <= i <= 'Z':
print(chr(ord('A')+(ord(i)-ord('A')-space2)%26),end = '')
else:
print(i,end = '')
def encryption(string,space1,space2):
if space1 >= len(string):
encode(string,space2)
else:
for number in range(0,space1):
str1 = string[number:len(string)+1:space1]
encode(str1,space2)
def decipherin(string,space1,space2):
str1 = ''
if space1 >= len(string):
decode(string,space2)
elif len(string)%space1 == 0:
for i in range(0,len(string)//space1):
str1 += string[i:len(string)+1:len(string)//space1]
else:
for i in range(0,len(string)//space1+1):
str1 += string[i:len(string)+1:len(string)//space1+1]
decode(str1,space2)
string = input('请输入明文').replace(' ','')
space1 = int(input('请输入栅栏数量:'))
space2 = int(input('请输入加密级数:'))%26
encryption(string,space1,space2)
print('\n')
text = input('请输入密文')
space3 = int(input('请输入栅栏数量:'))
space4 = int(input('请输入加密级数:'))%26
if ' ' in text:
print('密文有误')
else:
decipherin(text,space3,space4)
运行结果:
请输入明文Cheng Yin 2021 01 05
请输入栅栏数量:2
请输入加密级数:4
Gikm2200lrCr0115
请输入密文Gikm2200lrCr0115
请输入栅栏数量:2
请输入加密级数:4
ChengYin20210105