Introducción
En este proyecto, aprenderás cómo implementar el algoritmo de cifrado del cuadrado de Polibio. El cuadrado de Polibio es una cuadrícula de 5x5 que asigna cada letra del alfabeto inglés a un par de coordenadas. Al cifrar texto utilizando este método, se puede crear un mensaje codificado que solo puede ser descifrado por alguien que conozca el cuadrado de Polibio.
👀 Vista previa
## Ejemplo 1
text = "tynam"; encryption_text = "4454331132"
## Ejemplo 2
text = "tynam123"; encryption_text = "4454331132123"
## Ejemplo 3
text = "TYnam"; encryption_text = "4454331132"
## Ejemplo 4
text = None; encryption_text = None
🎯 Tareas
En este proyecto, aprenderás:
- Cómo definir el cuadrado de Polibio
- Cómo eliminar espacios y convertir el texto a minúsculas
- Cómo manejar entradas vacías o
None - Cómo cifrar texto utilizando el cuadrado de Polibio
- Cómo devolver el texto cifrado
🏆 Logros
Después de completar este proyecto, podrás:
- Comprender el concepto del algoritmo de cifrado del cuadrado de Polibio
- Implementar el algoritmo de cifrado de Polibio en Python
- Cifrar y descifrar texto utilizando el cuadrado de Polibio
- Manejar varios escenarios de entrada, incluyendo entradas vacías o
None
Eliminar espacios y convertir a minúsculas
En este paso, aprenderás cómo preparar el texto de entrada para el cifrado eliminando los espacios y convirtiendo todos los caracteres a minúsculas.
- Abra el archivo
polybius.pyen su editor de código. - Agregue el siguiente código a la función
polybius_encryption():
## Eliminar espacios y convertir a minúsculas
text = text.replace(" ", "").lower()
Esto eliminará cualquier espacio en el texto de entrada y convertirá todos los caracteres a minúsculas.
Manejar entradas vacías o nulas
En este paso, aprenderás cómo manejar el caso en el que el texto de entrada es vacío o None.
- Agrega el siguiente código al principio de la función
polybius_encryption():
if text is None:
return None
if text == "":
return None
Esto asegurará que la función devuelva None si el texto de entrada es None o una cadena vacía.
- Después de completar este paso, el código se muestra a continuación:
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Eliminar espacios y convertir a minúsculas
text = text.replace(" ", "").lower()
if text == "":
return None
Configurar el cuadrado de Polibio
En este paso, aprenderás cómo definir el cuadrado de Polibio, que es una cuadrícula de 5x5 que contiene las 26 letras del alfabeto inglés.
- Después de los pasos anteriores, defina el cuadrado de Polibio como una lista de listas, donde cada lista interna representa una fila del cuadrado:
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 cuadrado de Polibio se utilizará para asignar las letras del texto de entrada a sus correspondientes coordenadas.
Cifrar el texto
En este paso, aprenderás cómo cifrar el texto de entrada utilizando el cuadrado de Polibio.
- Después de los pasos anteriores, agregue el siguiente código a la función
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 carácter en el texto de entrada. Si el carácter es una letra, encuentra las coordenadas correspondientes en el cuadrado de Polibio y las agrega a la cadena encrypted_text. Si el carácter no es una letra, se agrega tal cual a la cadena encrypted_text.
Devolver el texto cifrado
En este último paso, aprenderás cómo devolver el texto cifrado desde la función polybius_encryption().
- Agrega la siguiente línea al final de la función
polybius_encryption():
return encrypted_text
Esto devolverá el texto cifrado como salida de la función.
Ahora, la función polybius_encryption() completa debería verse así:
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Eliminar espacios y convertir a minúsculas
text = text.replace(" ", "").lower()
if text == "":
return None
## Definir el cuadrado de Polibio
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))
Ya has completado la implementación del algoritmo de cifrado de Polibio. Puedes probar tu código ejecutando el archivo polybius.py y proporcionando el texto de entrada para ser cifrado.
- Ejecuta el archivo
polybius.pyy proporciona el texto de entrada para ser cifrado.
python3 polybius.py
- Observa la salida del texto cifrado.
## Ejemplo 1
text = "tynam"; encryption_text = "4454331132"
## Ejemplo 2
text = "tynam123"; encryption_text = "4454331132123"
## Ejemplo 3
text = "TYnam"; encryption_text = "4454331132"
## Ejemplo 4
text = None; encryption_text = None
¡Felicitaciones! Has implementado con éxito el algoritmo de cifrado de Polibio en Python.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



