维吉尼亚密码及其python实现

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

维吉尼亚密码

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

  • python代码
#维吉尼亚密码
class VigenereCipher:
    
    def __init__(self,k:str):
        v=''.join(chr(i) for i in range(97,123))
        d=dict(zip(v,range(0,26)))
        self.k=k#密钥k,字符串形式
        k=k.lower()
        self.kn=len(k)
        kv=[]#储存密钥K对应的数字串
        for i in k:kv.append(d[i])
        self.kv=kv
        
    
    def encrypt(self,m:str):
        m=m.replace(' ','')
        m=m.lower()
        #明文m,以字符串形式输入
        mn=[]#储存明文对应的数字串
        for mv in m:mn.append(d[mv])
        for i in range(0,len(mn)):mn[i]=(mn[i]+self.kv[i%self.kn])%26#加密运算
        s=''
        for i in mn:s+=list(d.keys())[list(d.values()).index(i)]
        print('The ciphertext is:',s.upper())
        
    def decrypt(self,m:str):
        #密文m,以字符串形式输入
        m=m.lower()
        mn=[]
        for mv in m:mn.append(d[mv])
        for i in range(0,len(mn)):mn[i]=(mn[i]-self.kv[i%self.kn])%26#解密运算
        s=''
        for i in mn:s+=list(d.keys())[list(d.values()).index(i)]
        print('The plaintext is:',s)

  • 实现过程
    ①生成密码器
    以‘rehpyc’密钥生成维吉尼亚密码器:
    在这里插入图片描述
    ②加密
    对‘informationsecurityandcryptography’加密:
    在这里插入图片描述
    ③解密
    对得到的密文解密:
    在这里插入图片描述
    ④例题的加解密
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值