A cifra colunar é uma cifra de transposição que funciona assim.
Comece com uma mensagem secreta:
msg = "Meet me by the lake at midnight. Bring shovel."Transforme as letras maiúsculas em minúsculas e remova a pontuação e os espaços:
msg = "meetmebythelakeatmidnightbringshovel"Em seguida, escolha uma palavra-chave formada por letras distintas:
keyword = "python"Divida a mensagem em blocos com o mesmo comprimento da palavra-chave e escreva-os em linhas abaixo da palavra-chave. Depois, numere as colunas com base na ordem alfabética das letras da palavra-chave:
| p | y | t | h | o | n |
|---|---|---|---|---|---|
| m | e | e | t | m | e |
| b | y | t | h | e | l |
| a | k | e | a | t | m |
| i | d | n | i | g | h |
| t | b | r | i | n | g |
| s | h | o | v | e | l |
| 4 | 6 | 5 | 1 | 3 | 2 |
Leia a mensagem cifrada (texto cifrado) nas colunas, na ordem especificada pelos números:
ciphertext = "thaiivelmhglmetgnembaitsetenroeykdbh"Se o comprimento da mensagem não for múltiplo do comprimento da palavra-chave, preencha cada espaço em branco com "x". Por exemplo:
msg = "Meet me at midnight."
keyword = "python"| p | y | t | h | o | n |
|---|---|---|---|---|---|
| m | e | e | t | m | e |
| a | t | m | i | d | n |
| i | g | h | t | x | x |
Crie uma função que receba uma string e uma palavra-chave. Retorne o texto cifrado se a string estiver em texto simples (ou seja, dividida em palavras normais em inglês e com pontuação), ou a mensagem decifrada se a string estiver em texto cifrado. A mensagem decifrada resultante não terá espaços.
c_cipher("Meet me by the lake at midnight. Bring shovel.", "python")
➞ "thaiivelmhglmetgnembaitsetenroeykdbh"
c_cipher("meeanbsleyamgioxebltirhxttkihnvxmhedtgex", "monty")
➞ "meetmebythelakeatmidnightbringshovelxxxx"
c_cipher("Mission Delta Kilo Sierra has been compromised. Kill Steve. Evacuate", "cake")
➞ "ioliiabcrsiteuxmieksrsnpiksecesdaoraemmdlvatxsntleheooelevax"N/A