就当为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’加密:
③解密
对得到的密文解密:
④例题的加解密