В этой главе вы узнаете, как расшифровывать шифр транспонирования.
Код
Обратите внимание на следующий код для лучшего понимания расшифровки транспозиционного шифра. Текст шифра для сообщения Transposition Cipher с ключом 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()
объяснение
Зашифрованный текст и упомянутый ключ являются двумя значениями, взятыми в качестве входных параметров для декодирования или дешифрования зашифрованного текста в обратной методике путем размещения символов в формате столбца и чтения их по горизонтали.
Вы можете размещать буквы в формате столбца, а затем объединять или объединять их вместе, используя следующий фрагмент кода —
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)
Выход
Программный код для расшифровки шифра транспонирования дает следующий вывод —