Cifra de Vigenère (apenas letras) - GregorioFornetti/CriPython GitHub Wiki
Vídeo tutorial
Caso goste de assistir vídeos tutorias, clique aqui para assistir um vídeo sobre a Cifra de Vigenère no modo apenas letras.
Cifra de Vigenère - Apenas letras
A cifra de Vigenère é uma cifra de criptografia que consiste em utilizar a Cifra de César variando de chave a cada letra lida pelo programa. Para fazer cada troca de letra na mensagem encriptada, é feito a soma da letra atual da mensagem com a letra atual da chave (com A=0, B=1, C=2, ...), e desse valor é aplicado o módulo de 26 (pegar o resto da divisão de um número X por 26). Agora, caso queira fazer a tradução, você deverá pegar o valor da letra da mensagem encriptada, somar 26 a esse valor e subtrair com o valor atual da chave (e aplicar o modulo de 26). Abaixo estão representadas as formulas que podem ser utilizadas para encriptação/tradução da cifra:
Formula para encriptar:
Formula para traduzir:
Observação importante: quando a chave chega ao seu fim, ela volta para seu inicio. Por exemplo, se a chave é "casa" e a mensagem a encriptar é "mundo novo", a primeira letra da mensagem encriptada será formada juntando "c" e o "m" (primeira letra da chave e da mensagem) e a segunda será a junção de "a" com "u", ..., agora, na 5° iteração, a chave "casa" chegou ao fim, e voltou ao "c" e a letra que juntará com ela será o "o".
Chaves disponíveis
As chaves disponíveis nessa cifra são qualquer texto que não tenha caracteres especiais(obs: espaços podem ser colocados na chave sem problemas, pois eles serão removidos da chave dentro do programa) ou números, ou seja, as chaves são palavras apenas com letras. Exs. de chaves: casa, oi, atacar, ...
Observação: o valor da chave não moverá de casa em casos de caracteres inválidos na mensagem (qualquer caractere que não seja uma letra sem acento).
Grade de Vigenère/tabula recta
A grade de Vigenère/tabula recta é uma tabela que pode ser utilizada para encriptar/traduzir uma mensagem com a cifra de Vigenère. Abaixo está representado graficamente a tabela:
Usando a tabela: para explicar o uso dessa tabela, vamos utilizar alguns exemplos.
Exemplos: considerando que a letra da chave atual é "D" e a letra da mensagem atual é "G", para saber qual será a letra criptografada basta escolher a coluna D e a linha G (ou vice-versa) e ver qual é a letra referente (nesse caso, é a letra "J"). Agora considerando a chave como "C" e a letra da mensagem "K", a letra referente é "M".
Exemplos
EX 1: Considerando a mensagem igual a "b"(B=1) e a chave igual a "c"(C=2), teremos como mensagem encriptada a letra "d"(D=3)
EX 2: Agora um exemplo de tradução: considerando a mensagem igual a "c"(C=2) e a chave igual a "c", a mensagem encriptada será "e"(E=4). A mensagem traduzida será "c" (4 + 26 - 2 = 28 -> 27 (mod 26) -> 2). OBS: Outra forma de traduzir é criando uma chave de tradução, que será igual a 26 - chave_antiga (ou seja, o valor da nova chave será o que faltava para a antiga chave completar 26), isso faz com que a mensagem encriptada dê "uma volta no alfabeto" e volte a ser o seu valor original. Nesse caso, a chave de tradução seria "y" (26 - 2 = 24), que aplicando na mensagem encriptada resulta em "c" (4 + 24 = 28 (mod 26) -> 2).
Algumas indicações
Caso tenha interesse em entender melhor sobre essa cifra clique aqui e veja um pouco mais sobre a cifra de Vigenère. Caso tenha interesse em ver a implementação dessa cifra em Python, veja o arquivo "cifra_de_vigenere.py" na pasta "Cifras".
OBS: as imagens desse tópico e algumas informações vieram da wikipedia, nesse link