学堂 学堂 学堂公众号手机端

在Python中如何实现Vignere密码,代码是什么

lewis 6年前 (2019-07-11) 阅读数 8 #技术
在这篇文章中,我们来学习一下“在Python中如何实现Vignere密码,代码是什么”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。



目录
Vignere密码 数学方程 Vignere Tableau 实现 代码 输出

Vignere密码

Vignere Cipher包含用于加密和解密的Caesar Cipher算法. Vignere Cipher与Caesar Cipher算法类似,只有一个主要区别:Caesar Cipher包含一个字符移位的算法,而Vignere Cipher包含多个字母移位的键.

数学方程

Vignere密码使用多组替换,因此它也被称为polyalphabetic cipher. Vignere Cipher将使用字母键而不是数字键表示:字母A将用于键0,字母B将用于键1,依此类推.加密过程之前和之后的字母数字显示在下面 :

基于Vignere密钥长度的可能密钥数量的可能组合如下,给出了Vignere Cipher算法的安全性的结果 :

Vignere Tableau

用于Vignere密码的画面如下所示 :

实现

让我们了解如何实现Vignere密码.考虑文本这是Vignere密码的基本实现将被编码,使用的密钥是PIZZA.

代码

您可以使用以下代码在Python中实现Vignere密码 :

importpyperclip
LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
defmain():
myMessage="ThisisbasicimplementationofVignereCipher"
myKey='PIZZA'
myMode='encrypt'
ifmyMode=='encrypt':
translated=encryptMessage(myKey,myMessage)
elifmyMode=='decrypt':
translated=decryptMessage(myKey,myMessage)
print('%sedmessage:'%(myMode.title()))
print(translated)
print()
defencryptMessage(key,message):
returntranslateMessage(key,message,'encrypt')
defdecryptMessage(key,message):
returntranslateMessage(key,message,'decrypt')
deftranslateMessage(key,message,mode):
translated=[]#storestheencrypted/decryptedmessagestring
keyIndex=0
key=key.upper()
forsymbolinmessage:
num=LETTERS.find(symbol.upper())
ifnum!=-1:
ifmode=='encrypt':
num+=LETTERS.find(key[keyIndex])
elifmode=='decrypt':
num-=LETTERS.find(key[keyIndex])
num%=len(LETTERS)
ifsymbol.isupper():
translated.append(LETTERS[num])
elifsymbol.islower():
translated.append(LETTERS[num].lower())
keyIndex+=1

ifkeyIndex==len(key):
keyIndex=0
else:
translated.append(symbol)
return''.join(translated)
if__name__=='__main__':
main()

输出

当您实现上面给出的代码时,您可以观察到以下输出;

攻击Vignere密码的可能组合几乎是不可能的.因此,它被视为安全加密模式.


感谢各位的阅读,以上就是“在Python中如何实现Vignere密码,代码是什么”的内容了,经过本文的学习后,相信大家对在Python中如何实现Vignere密码,代码是什么都有更深刻的体会了吧。这里是博信,小编将为大家推送更多相关知识点的文章,欢迎关注!
版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门