溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python密碼學(xué)Vignere密碼怎么使用

發(fā)布時(shí)間:2022-05-24 17:20:06 來源:億速云 閱讀:162 作者:iii 欄目:開發(fā)技術(shù)

這篇“python密碼學(xué)Vignere密碼怎么使用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python密碼學(xué)Vignere密碼怎么使用”文章吧。

Vignere密碼

Vignere Cipher包含用于加密和解密的Caesar Cipher算法. Vignere Cipher與Caesar Cipher算法類似,只有一個(gè)主要區(qū)別:Caesar Cipher包含一個(gè)字符移位的算法,而Vignere Cipher包含多個(gè)字母移位的鍵.

數(shù)學(xué)方程

python密碼學(xué)Vignere密碼怎么使用

Vignere密碼使用多組替換,因此它也被稱為 polyalphabetic cipher . Vignere Cipher將使用字母鍵而不是數(shù)字鍵表示:字母A將用于鍵0,字母B將用于鍵1,依此類推.加密過程之前和之后的字母數(shù)字顯示在下面 :

python密碼學(xué)Vignere密碼怎么使用

基于Vignere密鑰長度的可能密鑰數(shù)量的可能組合如下,給出了Vignere Cipher算法的安全性的結(jié)果 :

python密碼學(xué)Vignere密碼怎么使用

Vignere Tableau

用于Vignere密碼的畫面如下所示 :

python密碼學(xué)Vignere密碼怎么使用

實(shí)現(xiàn)

讓我們了解如何實(shí)現(xiàn)Vignere密碼.考慮文本這是Vignere密碼的基本實(shí)現(xiàn)將被編碼,使用的密鑰是 PIZZA.

代碼

您可以使用以下代碼在Python中實(shí)現(xiàn)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()

輸出

當(dāng)您實(shí)現(xiàn)上面給出的代碼時(shí),您可以觀察到以下輸出;

python密碼學(xué)Vignere密碼怎么使用

攻擊Vignere密碼的可能組合幾乎是不可能的.因此,它被視為安全加密模式.

以上就是關(guān)于“python密碼學(xué)Vignere密碼怎么使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI