




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程目錄換位密碼示例代碼解釋輸出Pyperclip代碼輸出解釋解密轉(zhuǎn)置密碼的步驟代碼說明輸出
換位密碼
TranspositionCipher是一種加密算法,其中明文中的字母順序被重新排列以形成密文.在此過程中,不包括實際的純文本字母.
示例
轉(zhuǎn)置密碼的一個簡單示例是柱狀轉(zhuǎn)置密碼其中純文本中的每個字符都是水平寫入的,具有指定的字母寬度.密碼是垂直寫入的,它創(chuàng)建了一個完全不同的密文.
考慮純文本helloworld,讓我們應(yīng)用簡單的柱狀轉(zhuǎn)置技術(shù),如圖所示在
純文本字符水平放置,密文以垂直格式創(chuàng)建為:holewdlolr.現(xiàn)在,接收方必須使用同一個表將密文解密為純文本.
代碼
以下程序代碼演示了柱狀轉(zhuǎn)置技術(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)建密文并通過讀取每列中的字符來打印密文.
輸出
程序代碼對于柱狀轉(zhuǎn)置技術(shù)的基本實現(xiàn),給出以下輸出:
注意:密碼分析者觀察到當(dāng)進行轉(zhuǎn)座技術(shù)時加密安全性的顯著改善.他們還指出,使用相同的轉(zhuǎn)置密碼重新加密密文可以提高安全性.
以上,我們了解了TranspositionCipher.下面,我們將討論它的加密.
Pyperclip
Python編程語言中pyperclip插件的主要用法是執(zhí)行跨平臺模塊,用于將文本復(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ù)拆分字符并以柱狀格式迭代它們的過程.主函數(shù)在結(jié)尾處初始化以獲得適當(dāng)?shù)妮敵?
解密轉(zhuǎn)置密碼的步驟
請注意以下代碼以便更好地理解解密轉(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()
說明
密文和提到的密鑰是作為輸入?yún)?shù)的兩個值,用于解碼或解密通過以列格式放置字符并以水平方式讀取它們的反向技術(shù)密文.
您可以以列格式放置字母,然后使用以下部分將它們組合或連接在一起代碼:
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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 月餅定貨協(xié)議書
- 車廠車輛改造合同協(xié)議
- 土地承包合同終止
- 社區(qū)農(nóng)業(yè)科技應(yīng)用示范項目協(xié)議
- 專業(yè)論壇會議舉辦協(xié)議
- 車訂車定金合同協(xié)議
- 過渡合同協(xié)議
- 轉(zhuǎn)讓露營推車合同協(xié)議
- 超齡工合同協(xié)議
- 滯留人員協(xié)議書
- 現(xiàn)場OPC SERVER服務(wù)器與OPC 客戶端遠程連接設(shè)置方法
- 諾貝爾文學(xué)獎獲得者莫言
- 粵教科技版科學(xué)六年級下冊第14課《生物生存的環(huán)境》教學(xué)課件
- 高考語文作文素材:《典籍里的中國》課件33張
- 隧道施工安全教育培訓(xùn)
- 2022年道路交通安全防汛工作應(yīng)急預(yù)案
- (完整)《神經(jīng)病學(xué)》考試題庫及答案
- 邊坡支護之錨桿施工技術(shù)ppt版(共35頁)
- 黃芩常見的病蟲害癥狀及防治措施
- 思政課社會實踐報告1500字6篇
- GB∕T 25119-2021 軌道交通 機車車輛電子裝置
評論
0/150
提交評論