首頁 > 軟體

python密碼學Vignere密碼教學

2022-05-24 14:00:42

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的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com