Giải mã mật mã chuyển vị

Trong chương này, bạn sẽ học quy trình giải mã mật mã chuyển vị.

Hãy quan sát đoạn mã sau để hiểu rõ hơn về việc giải mã mật mã chuyển vị. Văn bản mật mã cho tin nhắnTransposition Cipher với chìa khóa là 6 được tìm nạp như 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()

Giải trình

Văn bản mật mã và khóa được đề cập là hai giá trị được lấy làm tham số đầu vào để giải mã hoặc giải mã văn bản mật mã theo kỹ thuật ngược lại bằng cách đặt các ký tự ở định dạng cột và đọc chúng theo phương ngang.

Bạn có thể đặt các chữ cái ở định dạng cột và sau đó kết hợp hoặc nối chúng với nhau bằng đoạn mã sau:

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)

Đầu ra

Mã chương trình để giải mã mật mã chuyển vị cho kết quả sau: