python密碼學(xué)Vignere密碼教程_第1頁
python密碼學(xué)Vignere密碼教程_第2頁
python密碼學(xué)Vignere密碼教程_第3頁
python密碼學(xué)Vignere密碼教程_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第python密碼學(xué)Vignere密碼教程目錄Vignere密碼數(shù)學(xué)方程VignereTableau實(shí)現(xiàn)代碼輸出

Vignere密碼

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

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

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

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

VignereTableau

用于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í),您可以觀察到以下輸出;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論