python密碼學換位密碼及換位解密轉置加密教程_第1頁
python密碼學換位密碼及換位解密轉置加密教程_第2頁
python密碼學換位密碼及換位解密轉置加密教程_第3頁
python密碼學換位密碼及換位解密轉置加密教程_第4頁
python密碼學換位密碼及換位解密轉置加密教程_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第python密碼學換位密碼及換位解密轉置加密教程目錄換位密碼示例代碼解釋輸出Pyperclip代碼輸出解釋解密轉置密碼的步驟代碼說明輸出

換位密碼

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

示例

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

考慮純文本helloworld,讓我們應用簡單的柱狀轉置技術,如圖所示在

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

代碼

以下程序代碼演示了柱狀轉置技術的基本實現:

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'))

解釋

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

輸出

程序代碼對于柱狀轉置技術的基本實現,給出以下輸出:

注意:密碼分析者觀察到當進行轉座技術時加密安全性的顯著改善.他們還指出,使用相同的轉置密碼重新加密密文可以提高安全性.

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

Pyperclip

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

pipinstallpyperclip

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

用于加密轉置密碼的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()

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

函數main()調用encryptMessage(),其中包括使用len函數拆分字符并以柱狀格式迭代它們的過程.主函數在結尾處初始化以獲得適當的輸出.

解密轉置密碼的步驟

請注意以下代碼以便更好地理解解密轉置密碼.密碼為6的消息轉置密碼的密文被提取為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()

說明

密文和提到的密鑰是作為輸入參數的兩個值,用于解碼或解密通過以列格式放置字符并以水平方式讀取它們的反向技術密文.

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

for

symbol

in

message:

plaintext[col]

+=

symbol

col

+=

1

if

(col

==

numOfColumns)

or

(col

==

numOfColumns

-

1

and

row

=

numOfRows

-

numOfShadedBo

溫馨提示

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

評論

0/150

提交評論