




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美術設計師考試的注意事項試題及答案
- 苗木移植協議合同協議
- 助理廣告師創意理念與實踐試題及答案
- 藥品付款協議書范本
- 葡萄大棚轉讓合同協議
- 音色錄音測試題及答案
- 基礎運營考試題及答案
- 平面幾何 試題分類及答案
- 助理廣告師試題及答案全面解析
- 運動品牌廣告設計的特殊性試題及答案
- 《大數據環境下的網絡安全問題探討(論文)8000字》
- 粵教科技版科學六年級下冊第14課《生物生存的環境》教學課件
- 高考語文作文素材:《典籍里的中國》課件33張
- 2022年道路交通安全防汛工作應急預案
- (完整)《神經病學》考試題庫及答案
- 邊坡支護之錨桿施工技術ppt版(共35頁)
- 黃芩常見的病蟲害癥狀及防治措施
- 思政課社會實踐報告1500字6篇
- GB∕T 25119-2021 軌道交通 機車車輛電子裝置
- 電池PCBA規格書
- 機械加工切削全參數推薦表
評論
0/150
提交評論