溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python換位密碼及換位解密轉置加密怎么實現(xiàn)

發(fā)布時間:2022-05-24 09:17:53 來源:億速云 閱讀:369 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹了python換位密碼及換位解密轉置加密怎么實現(xiàn)的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇python換位密碼及換位解密轉置加密怎么實現(xiàn)文章都會有所收獲,下面我們一起來看看吧。

換位密碼

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

示例

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

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

python換位密碼及換位解密轉置加密怎么實現(xiàn)

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

代碼

以下程序代碼演示了柱狀轉置技術的基本實現(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)建密文并通過讀取每列中的字符來打印密文.

輸出

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

python換位密碼及換位解密轉置加密怎么實現(xiàn)

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

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

Pyperclip

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

pip install pyperclip

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

python換位密碼及換位解密轉置加密怎么實現(xià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()

輸出

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

python換位密碼及換位解密轉置加密怎么實現(xiàn)

解釋

  • 函數(shù) main()調用 encryptMessage(),其中包括使用 len 函數(shù)拆分字符并以柱狀格式迭代它們的過程.

  • 主函數(shù)在結尾處初始化以獲得適當?shù)妮敵?

解密轉置密碼的步驟

代碼

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

說明

密文和提到的密鑰是作為輸入參數(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)

輸出

解密轉置密碼的程序代碼給出以下輸出;

python換位密碼及換位解密轉置加密怎么實現(xiàn)

關于“python換位密碼及換位解密轉置加密怎么實現(xiàn)”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“python換位密碼及換位解密轉置加密怎么實現(xiàn)”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI