python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程_第1頁(yè)
python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程_第2頁(yè)
python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程_第3頁(yè)
python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程_第4頁(yè)
python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程目錄換位密碼示例代碼解釋輸出Pyperclip代碼輸出解釋解密轉(zhuǎn)置密碼的步驟代碼說(shuō)明輸出

換位密碼

TranspositionCipher是一種加密算法,其中明文中的字母順序被重新排列以形成密文.在此過(guò)程中,不包括實(shí)際的純文本字母.

示例

轉(zhuǎn)置密碼的一個(gè)簡(jiǎn)單示例是柱狀轉(zhuǎn)置密碼其中純文本中的每個(gè)字符都是水平寫入的,具有指定的字母寬度.密碼是垂直寫入的,它創(chuàng)建了一個(gè)完全不同的密文.

考慮純文本helloworld,讓我們應(yīng)用簡(jiǎn)單的柱狀轉(zhuǎn)置技術(shù),如圖所示在

純文本字符水平放置,密文以垂直格式創(chuàng)建為:holewdlolr.現(xiàn)在,接收方必須使用同一個(gè)表將密文解密為純文本.

代碼

以下程序代碼演示了柱狀轉(zhuǎn)置技術(shù)的基本實(shí)現(xiàn):

def

split_len(seq,

length):

return

[seq[i:i

+

length]

for

i

in

range(0,

len(seq),

length)]

def

encode(key,

plaintext):

order

=

{

int(val):

num

for

num,

val

in

enumerate(key)

ciphertext

=

''

for

index

in

sorted(order.keys()):

for

part

in

split_len(plaintext,

len(key)):

try:ciphertext

+=

part[order[index]]

except

IndexError:

continue

return

ciphertext

print(encode('3214',

'HELLO'))

解釋

使用函數(shù)split_len(),我們可以拆分純文本字符,可以按柱狀或行格式放置.編碼方法有助于使用指定列數(shù)的密鑰創(chuàng)建密文并通過(guò)讀取每列中的字符來(lái)打印密文.

輸出

程序代碼對(duì)于柱狀轉(zhuǎn)置技術(shù)的基本實(shí)現(xiàn),給出以下輸出:

注意:密碼分析者觀察到當(dāng)進(jìn)行轉(zhuǎn)座技術(shù)時(shí)加密安全性的顯著改善.他們還指出,使用相同的轉(zhuǎn)置密碼重新加密密文可以提高安全性.

以上,我們了解了TranspositionCipher.下面,我們將討論它的加密.

Pyperclip

Python編程語(yǔ)言中pyperclip插件的主要用法是執(zhí)行跨平臺(tái)模塊,用于將文本復(fù)制和粘貼到剪貼板.您可以使用如下所示的命令安裝pythonpyperclip模塊

pipinstallpyperclip

如果系統(tǒng)中已存在該要求,您可以看到以下輸出:

用于加密轉(zhuǎn)置密碼的python代碼,其中pyperclip是主要模塊,如下所示:

import

pyperclip

def

main():

myMessage

=

'Transposition

Cipher'

myKey

=

10

ciphertext

=

encryptMessage(myKey,

myMessage)

print("Cipher

Text

is")

print(ciphertext

+

'|')

pyperclip.copy(ciphertext)

def

encryptMessage(key,

message):

ciphertext

=

['']

*

key

for

col

in

range(key):

position

=

col

while

position

len(message):

ciphertext[col]

+=

message[position]

position

+=

key

return

''.join(ciphertext)

#Cipher

text

if

__name__

==

'__main__':

main()

用于加密轉(zhuǎn)置密碼的程序代碼,其中pyperclip是主模塊提供以下輸出:

函數(shù)main()調(diào)用encryptMessage(),其中包括使用len函數(shù)拆分字符并以柱狀格式迭代它們的過(guò)程.主函數(shù)在結(jié)尾處初始化以獲得適當(dāng)?shù)妮敵?

解密轉(zhuǎn)置密碼的步驟

請(qǐng)注意以下代碼以便更好地理解解密轉(zhuǎn)置密碼.密碼為6的消息轉(zhuǎn)置密碼的密文被提取為TonersraiCntisippoh.

import

math,

pyperclip

def

main():

myMessage=

'Toners

raiCntisippoh'

myKey

=

6

plaintext

=

decryptMessage(myKey,

myMessage)

print("The

plain

text

is")

print('Transposition

Cipher')

def

decryptMessage(key,

message):

numOfColumns

=

math.ceil(len(message)

/

key)

numOfRows

=

key

numOfShadedBoxes

=

(numOfColumns

*

numOfRows)

-

len(message)

plaintext

=

float('')

*

numOfColumns

col

=

0

row

=

0

for

symbol

in

message:

plaintext[col]

+=

symbol

col

+=

1

if

(col

==

numOfColumns)

or

(col

==

numOfColumns

-

1

and

row

=

numOfRows

-

numOfShadedBoxes):

col

=

0

row

+=

1

return

''.join(plaintext)

if

__name__

==

'__main__':

main()

說(shuō)明

密文和提到的密鑰是作為輸入?yún)?shù)的兩個(gè)值,用于解碼或解密通過(guò)以列格式放置字符并以水平方式讀取它們的反向技術(shù)密文.

您可以以列格式放置字母,然后使用以下部分將它們組合或連接在一起代碼:

for

symbol

in

message:

plaintext[col]

+=

symbol

col

+=

1

if

(col

==

numOfColumns)

or

(col

==

numOfColumns

-

1

and

row

=

numOfRows

-

numOfShadedBo

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論