Introdução
Neste projeto, você aprenderá como implementar o algoritmo de criptografia do quadrado de Políbio (Polybius square). O quadrado de Políbio é uma grade 5x5 que mapeia cada letra do alfabeto inglês para um par de coordenadas. Ao criptografar texto usando este método, você pode criar uma mensagem codificada que só pode ser descriptografada por alguém com conhecimento do quadrado de Políbio.
👀 Pré-visualização
## Exemplo 1
text = "tynam"; encryption_text = "4454331132"
## Exemplo 2
text = "tynam123"; encryption_text = "4454331132123"
## Exemplo 3
text = "TYnam"; encryption_text = "4454331132"
## Exemplo 4
text = None; encryption_text = None
🎯 Tarefas
Neste projeto, você aprenderá:
- Como definir o quadrado de Políbio
- Como remover espaços e converter texto para minúsculas
- Como lidar com entrada vazia ou
None - Como criptografar texto usando o quadrado de Políbio
- Como retornar o texto criptografado
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Compreender o conceito do algoritmo de criptografia do quadrado de Políbio
- Implementar o algoritmo de criptografia de Políbio em Python
- Criptografar e descriptografar texto usando o quadrado de Políbio
- Lidar com vários cenários de entrada, incluindo entrada vazia ou
None
Remover Espaços e Converter para Minúsculas
Nesta etapa, você aprenderá como preparar o texto de entrada para criptografia, removendo espaços e convertendo todos os caracteres para minúsculas.
- Abra o arquivo
polybius.pyno seu editor de código. - Adicione o seguinte código à função
polybius_encryption():
## Remove spaces and convert to lowercase
text = text.replace(" ", "").lower()
Isso removerá quaisquer espaços no texto de entrada e converterá todos os caracteres para minúsculas.
Tratar Entradas Vazias ou None
Nesta etapa, você aprenderá como lidar com o caso em que o texto de entrada está vazio ou é None.
- Adicione o seguinte código no início da função
polybius_encryption():
if text is None:
return None
if text == "":
return None
Isso garantirá que a função retorne None se o texto de entrada for None ou uma string vazia.
- Após concluir esta etapa, o código é mostrado abaixo:
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Remove spaces and convert to lowercase
text = text.replace(" ", "").lower()
if text == "":
return None
Configurar o Quadrado de Políbio
Nesta etapa, você aprenderá como definir o quadrado de Polybius, que é uma grade 5x5 contendo as 26 letras do alfabeto inglês.
- Após as etapas anteriores, defina o quadrado de Polybius como uma lista de listas, onde cada lista interna representa uma linha do quadrado:
polybius_square = [
["a", "b", "c", "d", "e"],
["f", "g", "h", "ij", "k"],
["l", "m", "n", "o", "p"],
["q", "r", "s", "t", "u"],
["v", "w", "x", "y", "z"],
]
Este quadrado de Polybius será usado para mapear as letras no texto de entrada para suas coordenadas correspondentes.
Criptografar o Texto
Nesta etapa, você aprenderá como criptografar o texto de entrada usando o quadrado de Polybius.
- Após as etapas anteriores, adicione o seguinte código à função
polybius_encryption():
encrypted_text = ""
for char in text:
if char.isalpha():
for i, row in enumerate(polybius_square):
for j, ch in enumerate(row):
if char in ch:
encrypted_text += str(i + 1) + str(j + 1)
else:
encrypted_text += char
Este código itera sobre cada caractere no texto de entrada. Se o caractere for uma letra, ele encontra as coordenadas correspondentes no quadrado de Polybius e as anexa à string encrypted_text. Se o caractere não for uma letra, ele é adicionado à string encrypted_text como está.
Retornar o Texto Criptografado
Nesta etapa final, você aprenderá como retornar o texto criptografado da função polybius_encryption().
- Adicione a seguinte linha no final da função
polybius_encryption():
return encrypted_text
Isso retornará o texto criptografado como a saída da função.
Agora, a função polybius_encryption() completa deve ser semelhante a esta:
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Remove spaces and convert to lowercase
text = text.replace(" ", "").lower()
if text == "":
return None
## Define the Polybius square
polybius_square = [
["a", "b", "c", "d", "e"],
["f", "g", "h", "ij", "k"],
["l", "m", "n", "o", "p"],
["q", "r", "s", "t", "u"],
["v", "w", "x", "y", "z"],
]
encrypted_text = ""
for char in text:
if char.isalpha():
for i, row in enumerate(polybius_square):
for j, ch in enumerate(row):
if char in ch:
encrypted_text += str(i + 1) + str(j + 1)
else:
encrypted_text += char
return encrypted_text
if __name__ == "__main__":
txt = input()
print(polybius_encryption(txt))
Você concluiu a implementação do algoritmo de criptografia de Polybius. Você pode testar seu código executando o arquivo polybius.py e fornecendo o texto de entrada a ser criptografado.
- Execute o arquivo
polybius.pye forneça o texto de entrada a ser criptografado.
python3 polybius.py
- Observe a saída do texto criptografado.
## Example 1
text = "tynam"; encryption_text = "4454331132"
## Example 2
text = "tynam123"; encryption_text = "4454331132123"
## Example 3
text = "TYnam"; encryption_text = "4454331132"
## Example 4
text = None; encryption_text = None
Parabéns! Você implementou com sucesso o algoritmo de criptografia de Polybius em Python.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



