Decrittografia di Transposition Cipher

In questo capitolo imparerai la procedura per decrittografare il cifrario di trasposizione.

Codice

Osservare il codice seguente per una migliore comprensione della decrittografia di un cifrario di trasposizione. Il testo cifrato per il messaggioTransposition Cipher con chiave as 6 viene recuperato come 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()

Spiegazione

Il testo cifrato e la chiave citata sono i due valori presi come parametri di input per decodificare o decifrare il testo cifrato con tecnica inversa posizionando i caratteri in un formato di colonna e leggendoli in modo orizzontale.

È possibile inserire lettere in un formato di colonna e successivamente combinarle o concatenarle insieme utilizzando il seguente pezzo di codice:

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)

Produzione

Il codice del programma per la decrittografia del cifrario di trasposizione fornisce il seguente output: