维吉尼亚密码

维吉尼亚密码:维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

在一个凯撒密码中,字母表中的每一字母都会作一定的偏移,例如偏移量为3时,A就转换为了D、B转换为了E……而维吉尼亚密码则是由一些偏移量不同的恺撒密码组成。

例如:

明文:ATTACKATDAWN

密钥:LEMON

密文:LXFOPVEFRNHR

用数字0-25代替字母A-Z,维吉尼亚密码的加密文法可以写成同余的形式:
 
 
解密方法则能写成:
 
 
对应表格:
 

 

解密:

 1 c = input("请输入密文")
 2 a = input("请输入密钥")
 3 key = [ord(i)-97 for i in a]*b   #b是一个适宜的长度
 4 m = ''
 5 for i in range(len(c)):
 6     if c[i].islower:
 7         m = m+chr(97+(ord(c[i])-97-key[i])%26)
 8     if c[i].isupper:
 9         m = m+chr(65+(ord(c[i])-65-key[i])%26)
10 print(m)

 

 在线加密解密:http://www.metools.info/code/c71.html

 
利用pycipher:
1 import pycipher
2 pycipher.Vigenere('computer').encipher{'加密的内容'}  #加密
3 
4 pycipher.Vigenere('computer').decipher{'解密的内容'}   #解密

 

 
posted on 2021-05-16 21:34  laolaiyi  阅读(2392)  评论(0)    收藏  举报