Cifra de substituição simples (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 Substituição simples do modo apenas letras.

Substituição simples - Apenas letras

Essa cifra consiste em trocar cada letra do alfabeto por alguma outra letra. Por exemplo, a cifra pode trocar o 'A' por 'Z', o 'B' por 'C',o 'C' por 'T', ou seja, trocar uma letra por outra qualquer que ainda não tenha sido utilizada. Abaixo será explicado quais chaves são válidas para essa cifra e como elas funcionam.

Chaves disponíveis

Nesse tipo de cifra, a chave é dividida em duas partes: "letras mensagem comum" e "letras mensagem encriptada". Existem dois casos de chaves aceitas por essa cifra, que serão explicados logo abaixo:

Caso 1: ambas as chaves possuem todos os caracteres em comum (preferencialmente em ordem diferente). Nesse caso, todos caracteres da chave "letras mensagem comum" encontrados na mensagem, serão trocados pelos caracteres contidos na chave "letras mensagem encriptada". Para a tradução, o processo inverso acontecerá: todos caracteres da chave "letras mensagem encriptada" encontrados na mensagem, serão trocados pelos caracteres contidos na chave "letras mensagem comum".

EX: Considerando os seguintes valores: "letras mensagem comum" = abc e "letras mensagem encriptada" = cab, temos que toda vez que for encontrado a letra "a" na mensagem comum, ela será trocada por "c", "b" será trocado por "a" e "c" por "b". No caso da tradução, o "a" será trocado por "b", o "b" por "c", e o "c" por "b".

Caso 2: ambas as chaves possuem todos os caracteres em discordância (nenhuma possui um caractere igual a outra). Nesse caso, todos caracteres da chave "letras mensagem comum" encontrados na mensagem serão trocados pelos caracteres contidos na chave "letras mensagem encriptada", e todos os caracteres da chave "letras mensagem encriptada" encontrados na mensagem, serão trocadas pelos caracteres contidos na chave "letras mensagem comum". Para a tradução, o mesmo processo é aplicado.

EX: Considerando os seguintes valores: "letras mensagem comum" = a e "letras mensagem encriptada" = b, temos que toda vez que for encontrado a letra "a", ela será trocada por "b", e todo "b" será trocado por "a".

OBS 1: Caso tenha algum caractere repetido dentro de alguma das chaves, elas serão rejeitadas (ex: chave= "abcda"). Caso tenha algum caractere especial em alguma das chaves, elas também não serão aceitas (ex: chave="abcdé").

OBS 2: Caracteres de caixa alta e baixa serão considerados como a mesma coisa na chave. Por exemplo, se você colocar "Aa" na chave, ela será recusada por causa da repetição. Além disso, nesse modo de criptografia se você escolher trocar uma letra por qualquer outra, ambos os tipos de caixa (caixa alta e baixa) serão trocados.

EX: Se você escolher que "a" será trocado por "b", "A" será trocado por "B", e "a" será trocado por "b".

OBS 3: Para a tradução dessa cifra, acontecerá um processo inverso: as "letras mensagem encriptada" que serão trocadas pelas "letras mensagem comum".

EX: Se "a" for trocado por "b" para a encriptação, para a tradução "b" será trocado por "a".

Exemplos

EX 1: Considerando "abc" como valor de "Letras mensagem comum" e "def" como valor de "Letras mensagem encriptada", temos que a letra "a" se transformará em "d" na mensagem encriptada, o "b" em "e", e por fim o "c" em "f". OBS: não é preciso que você preencha a troca de todas as letras do alfabeto, você pode trocar apenas as letras que você quiser.

Ex 2: Utilizando a parte da chave "Letras mensagem comum" como "abcdefghijklmnopqrstuvwxyz" e "Letras mensagem encriptada" como "fhizdlmnavgewptubxjrqocsky", então o "a" será substituído por "f", o "b" será substituído por "h", o "c" se transformará em "i"...

Ex 3: Mensagem: Tudo bem com voce ? Eu estou bem, obrigado !

Letras mensagem comum:"abcdefghijklmnopqrstuvwxyz"

Letras mensagem encriptada: "fhizdlmnavgewptubxjrqocsky"

Mensagem encriptada recebida: Rqzt hdw itw otid ? Dq djrtq hdw, thxamfzt !

EX 4: Utilizando os mesmos valores dos dois exemplos anteriores como chave, temos que para a tradução o "f" será trocado por "a", o "h" será trocado por "b", o "i" se transformará em "c"... Ou seja, será feito um processo inverso de troca para que a mensagem seja traduzida.

Algumas indicações

Caso tenha interesse em entender melhor sobre essa cifra clique aqui e veja um pouco mais sobre a cifra de substituição simples. Caso tenha interesse em ver como esse código foi implementado em Python nesse programa, você pode acessar o arquivo "subst_simples.py" na pasta "Cifras".