【练习】与凯撒密码结合的栅栏密码

#栅栏凯撒密码
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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值