好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python密码学Vignere密码教程

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密码 :

import?pyperclip
LETTERS?=?'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def?main():
???myMessage?=?"This?is?basic?implementation?of?Vignere?Cipher"
???myKey?=?'PIZZA'
???myMode?=?'encrypt'??
???if?myMode?==?'encrypt':
??????translated?=?encryptMessage(myKey,?myMessage)
???elif?myMode?==?'decrypt':
??????translated?=?decryptMessage(myKey,?myMessage)??
???print('%sed?message:'?%?(myMode.title()))
???print(translated)
???print()
def?encryptMessage(key,?message):
???return?translateMessage(key,?message,?'encrypt')
def?decryptMessage(key,?message):
???return?translateMessage(key,?message,?'decrypt')
def?translateMessage(key,?message,?mode):
???translated?=?[]?#?stores?the?encrypted/decrypted?message?string
???keyIndex?=?0
???key?=?key.upper()
???for?symbol?in?message:
??????num?=?LETTERS.find(symbol.upper())
??????if?num?!=?-1:
?????????if?mode?==?'encrypt':
????????????num?+=?LETTERS.find(key[keyIndex])
elif?mode?==?'decrypt':
???????????????num?-=?LETTERS.find(key[keyIndex])
????????????num?%=?len(LETTERS)????????????
????????????if?symbol.isupper():
???????????????translated.append(LETTERS[num])
????????????elif?symbol.islower():
???????????????translated.append(LETTERS[num].lower())
????????????keyIndex?+=?1
????????????
????????????if?keyIndex?==?len(key):
???????????????keyIndex?=?0
?????????else:
????????????translated.append(symbol)
??????return?''.join(translated)
if?__name__?==?'__main__':
???main()

输出

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

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

以上就是python密码学Vignere密码教程的详细内容,更多关于python密码学Vignere的资料请关注其它相关文章!

查看更多关于python密码学Vignere密码教程的详细内容...

  阅读:40次