移位密码及其python实现

就当为CSDN这方面的python开源做点贡献哈哈哈

移位密码

  • 算法原理
    在这里插入图片描述

  • python代码
#移位密码
class ShiftCipher:
    global d
    d=dict(zip(''.join(chr(i) for i in range(97,123)),list(range(0,26))))#字母表
    def __init__(self,k:int):
        self.k=k;#k为移位数
        
def encrypt(self,m:str):#加密
    m=m.replace(' ','')
        #明文m,字符串形式
        mn=[]#储存明文模26余数
        for mv in m:mn.append(d[mv])
        for i in range(0,len(mn)):mn[i]=(mn[i]+self.k)%26#移位
        s=''
        for n in mn:s+=str(list(d.keys())[list(d.values()).index(n)])
        print('The ciphertext is:',s.upper())
            
    def decrypt(self,m:str):#解密
        #密文m,字符串形式
        m=m.lower()
        mn=[]#储存密文模26余数
        for mv in m:mn.append(d[mv])
        for i in range(0,len(mn)):mn[i]=(mn[i]-self.k)%26#逆移位
        s=''
        for n in mn:s+=str(list(d.keys())[list(d.values()).index(n)])
        print('The plaintext is:',s.upper()) 

  • 实现过程
    自定义移位密码位移数(5)加密一段英文(‘informationsecurityandcryptography’)并对得到的密文解密:
    在这里插入图片描述

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值