欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程

 更新時(shí)間:2022年05月23日 17:18:54   作者:菜鳥教程  
這篇文章主要為大家介紹了python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

換位密碼

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

示例

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

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

純文本字符水平放置,密文以垂直格式創(chuàng)建為:holewdlo lr.現(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)建密文并通過讀取每列中的字符來打印密文.

輸出

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

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

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

Pyperclip

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

pip install pyperclip

如果系統(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)置密碼的步驟

代碼

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

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ù)的兩個(gè)值,用于解碼或解密通過以列格式放置字符并以水平方式讀取它們的反向技術(shù)密文.

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

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)

輸出

解密轉(zhuǎn)置密碼的程序代碼給出以下輸出;

以上就是python密碼學(xué)換位密碼及換位解密轉(zhuǎn)置加密教程的詳細(xì)內(nèi)容,更多關(guān)于python密碼學(xué)換位解密轉(zhuǎn)置加密的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python Flask上下文管理機(jī)制實(shí)例解析

    Python Flask上下文管理機(jī)制實(shí)例解析

    這篇文章主要介紹了Python Flask上下文管理機(jī)制實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python字符串的常用操作方法小結(jié)

    python字符串的常用操作方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了python字符串的常用操作方法,如字符串的替換、刪除、截取、復(fù)制、連接、比較、查找、分割等,需要的朋友可以參考下
    2016-05-05
  • Python3+SQLAlchemy+Sqlite3實(shí)現(xiàn)ORM教程

    Python3+SQLAlchemy+Sqlite3實(shí)現(xiàn)ORM教程

    這篇文章主要介紹了Python3+SQLAlchemy+Sqlite3實(shí)現(xiàn)ORM教程,需要的朋友可以參考下
    2021-02-02
  • Python 2.7中文顯示與處理方法

    Python 2.7中文顯示與處理方法

    今天小編就為大家分享一篇Python 2.7中文顯示與處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 詳解Python獲取線程返回值的三種方式

    詳解Python獲取線程返回值的三種方式

    提到線程,你的大腦應(yīng)該有這樣的印象:我們可以控制它何時(shí)開始,卻無法控制它何時(shí)結(jié)束,那么如何獲取線程的返回值呢?今天就和大家分享一下一些做法
    2022-07-07
  • python存儲(chǔ)16bit和32bit圖像的實(shí)例

    python存儲(chǔ)16bit和32bit圖像的實(shí)例

    今天小編就為大家分享一篇python存儲(chǔ)16bit和32bit圖像的實(shí)例,具有的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 16個(gè)python常用魔法函數(shù)小結(jié)

    16個(gè)python常用魔法函數(shù)小結(jié)

    本文主要介紹了16個(gè)python常用魔法函數(shù)小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • python學(xué)習(xí)基礎(chǔ)之循環(huán)import及import過程

    python學(xué)習(xí)基礎(chǔ)之循環(huán)import及import過程

    python中的import語句是用來導(dǎo)入模塊的,下面這篇文章主要給大家介紹了關(guān)于python學(xué)習(xí)基礎(chǔ)之循環(huán)import及import過程的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Python實(shí)現(xiàn)計(jì)算AUC的三種方式總結(jié)

    Python實(shí)現(xiàn)計(jì)算AUC的三種方式總結(jié)

    AUC(Area?under?curve)是機(jī)器學(xué)習(xí)常用的二分類評(píng)測(cè)手段,直接含義是ROC曲線下的面積。本文總結(jié)了Python語言實(shí)現(xiàn)計(jì)算AUC的三種方式,感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • 關(guān)于Python中的編碼規(guī)范

    關(guān)于Python中的編碼規(guī)范

    這篇文章主要介紹了關(guān)于Python中的編碼規(guī)范,一千個(gè)程序員有一千套編碼規(guī)范,統(tǒng)一的編碼規(guī)范可以提高開發(fā)效率,需要的朋友可以參考下
    2023-04-04

最新評(píng)論