Implementar el Cifrado César

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás cómo implementar el Cifrado César, una técnica de encriptación simple y ampliamente conocida. El Cifrado César utiliza un método de sustitución para reemplazar los caracteres ingleses de un mensaje con el carácter N posiciones más adelante o atrás en la secuencia del alfabeto.

👀 Vista previa

## Ejemplo 1
text = "python"; encryption_text = "ravjqp"
## Ejemplo 2
text = "pyThon"; encryption_text = "raVjqp"
## Ejemplo 3
text = "Python31"; encryption_text = "Ravjqp31"
## Ejemplo 4
text = None; encryption_text = None

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo configurar el entorno del proyecto y crear los archivos necesarios
  • Cómo implementar la función de encriptación César para desplazar cada carácter inglés de una cadena 2 posiciones hacia la derecha
  • Cómo manejar diferentes tipos de entrada, incluyendo caracteres ingleses, caracteres no ingleses y valores nulos
  • Cómo probar la función de encriptación César con varios ejemplos de entrada

🏆 Logros

Después de completar este proyecto, podrás:

  • Comprender los principios básicos de la técnica de encriptación Cifrado César
  • Implementar una función de encriptación César en Python sin utilizar ninguna librería estándar o de terceros
  • Desarrollar habilidades en manipulación de cadenas, codificación de caracteres y lógica condicional
  • Probar tu código para asegurarte de que cumpla con los requisitos del proyecto

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_operations("File Operations") subgraph Lab Skills python/strings -.-> lab-302693{{"Implementar el Cifrado César"}} python/python_shell -.-> lab-302693{{"Implementar el Cifrado César"}} python/conditional_statements -.-> lab-302693{{"Implementar el Cifrado César"}} python/for_loops -.-> lab-302693{{"Implementar el Cifrado César"}} python/function_definition -.-> lab-302693{{"Implementar el Cifrado César"}} python/file_operations -.-> lab-302693{{"Implementar el Cifrado César"}} end

Implementar el Cifrado César

En este paso, implementarás la función de cifrado César.

  1. Abre el archivo caesar_cipher.py.

  2. Modifica la función caesar_encryption(text) para lograr la funcionalidad deseada:

    • Ingresa una cadena y desplaza cada carácter inglés de la cadena 2 posiciones hacia la derecha.
    • Solo convierte los caracteres ingleses de media anchura, deja el resto del contenido sin cambios.
    • El caso de los caracteres debe permanecer sin cambios, por ejemplo, A se convertirá en C, y b se convertirá en d.
  3. Reemplaza el comentario """TODO""" con el siguiente código:

def caesar_encryption(text: str) -> str:
    if text is None:
        return None
    encryption_text = ""
    for char in text:
        if char.isalpha() and char.isascii():
            if char.islower():
                encryption_text += chr((ord(char) - ord("a") + 2) % 26 + ord("a"))
            else:
                encryption_text += chr((ord(char) - ord("A") + 2) % 26 + ord("A"))
        else:
            encryption_text += char
    return encryption_text

Este código implementa el algoritmo de cifrado César tal como se describe en los requisitos del proyecto.

Probar el Cifrado César

En este paso, probarás la función de cifrado César con algunos ejemplos de entrada.

  1. Agrega el siguiente código al final del archivo caesar_cipher.py:
if __name__ == "__main__":
    test_input_text = input()
    print(caesar_encryption(test_input_text))
  1. Guarda el archivo caesar_cipher.py.
  2. Abre una terminal y navega hasta el directorio /home/labex/project.
  3. Ejecuta el script caesar_cipher.py usando el siguiente comando:
python3 caesar_cipher.py
  1. Ingresa algunos textos de entrada de prueba y observa la salida encriptada.

Verificar los Requisitos

En este paso, verificarás que tu implementación cumpla con los requisitos del proyecto.

  1. Revisa los requisitos del proyecto y asegúrate de que tu función caesar_encryption(text):

    • Tome una cadena de entrada y desplace cada carácter inglés de la cadena 2 posiciones hacia la derecha.
    • Solo convierta los caracteres ingleses de media anchura, dejando el resto del contenido sin cambios.
    • Preserve el caso de los caracteres, por ejemplo, A se convierte en C, y b se convierte en d.
  2. Prueba tu función con los ejemplos de referencia proporcionados:

## Ejemplo 1
text = "python"; encryption_text = "ravjqp"
## Ejemplo 2
text = "pyThon"; encryption_text = "raVjqp"
## Ejemplo 3
text = "Python31"; encryption_text = "Ravjqp31"
## Ejemplo 4
text = None; encryption_text = None
  1. Asegúrate de que tu función maneje correctamente todos los casos de prueba.

Felicitaciones ¡Has completado el proyecto del Cifrado César! Si tienes alguna pregunta o necesitas ayuda adicional, no dudes en preguntar.

✨ Revisar Solución y Practicar

Resumen

Felicitaciones ¡Has completado este proyecto! Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.