Implementación y prueba de la encriptación del Libro Yin

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 a implementar el algoritmo de cifrado Yin Book, un método que divide un mensaje completo en tres partes y las entrega por separado al destinatario. Esta técnica de cifrado se utilizó en la antigüedad para evitar la filtración de información, incluso si uno de los mensajeros era capturado por el enemigo.

👀 Vista previa

## Ejemplo 1

## Ejemplo 2

## Ejemplo 3

## Ejemplo 4

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo implementar la función yin_book_encryption para dividir un texto dado en múltiples partes de acuerdo con la regla de cifrado Yin Book.
  • Cómo probar la función yin_book_encryption con diferentes ejemplos de entrada.
  • Cómo entender la implementación de la función yin_book_encryption y la función auxiliar calculate_length.

🏆 Logros

Después de completar este proyecto, serás capaz de:

  • Entender el concepto del algoritmo de cifrado Yin Book.
  • Implementar la función yin_book_encryption para cifrar y descifrar mensajes.
  • Probar la función yin_book_encryption con varios escenarios de entrada.
  • Modificar la función yin_book_encryption para adaptarla a tus requisitos específicos.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) 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/ControlFlowGroup -.-> python/while_loops("While Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_reading_writing("Reading and Writing Files") subgraph Lab Skills python/strings -.-> lab-302786{{"Implementación y prueba de la encriptación del Libro Yin"}} python/while_loops -.-> lab-302786{{"Implementación y prueba de la encriptación del Libro Yin"}} python/lists -.-> lab-302786{{"Implementación y prueba de la encriptación del Libro Yin"}} python/function_definition -.-> lab-302786{{"Implementación y prueba de la encriptación del Libro Yin"}} python/file_reading_writing -.-> lab-302786{{"Implementación y prueba de la encriptación del Libro Yin"}} end

Implementar la función yin_book_encryption

En este paso, implementarás la función yin_book_encryption en el archivo yin_book.py para lograr la funcionalidad deseada.

  1. Abre el archivo yin_book.py en tu editor de código preferido.

  2. Implementa la función yin_book_encryption de acuerdo con los requisitos:

    • La función debe tomar una cadena text como entrada y devolver una lista de partes cifradas.
    • La longitud de la primera parte debe ser 1, la segunda debe ser 1 + 2, la tercera debe ser 1 + 2 + 3, y así sucesivamente, hasta que el texto se haya dividido completamente.
    • Si el texto de entrada está vacío, la función debe devolver None.
    • Un espacio cuenta como un carácter.

Aquí está el código que puedes utilizar para implementar la función yin_book_encryption:

def yin_book_encryption(text: str) -> list:
    """
    Cifra el texto dado de acuerdo con la regla de cifrado Yin Book.

    Args:
        text (str): El texto a cifrar.

    Returns:
        list: La lista de partes cifradas del texto.

    """

    def calculate_length(index):
        """
        Calcula la longitud de cada parte en función del índice dado.

        Args:
            index (int): El índice de la parte.

        Returns:
            int: La longitud de la parte.

        """
        return index * (index + 1) // 2

    if not text:
        return None

    encryption_text = []
    i = 0
    index = 1

    while i < len(text):
        part_length = calculate_length(index)
        sub_text = text[i : i + part_length]
        encryption_text.append(sub_text)
        i += part_length
        index += 1

    return encryption_text

Prueba la función yin_book_encryption

En este paso, probarás la función yin_book_encryption con los ejemplos proporcionados.

  1. Abre el archivo yin_book.py en tu editor de código.
  2. Agrega el siguiente código al final del archivo para probar la función yin_book_encryption:
## Ejemplo 1
texto = "Hello, World!"
print(yin_book_encryption(texto))

## Ejemplo 2
texto = "!@#$%^&*) Hello, World!"
print(yin_book_encryption(texto))

## Ejemplo 3
texto = "None"
print(yin_book_encryption(texto))

## Ejemplo 4
texto = ''
print(yin_book_encryption(texto))
  1. Guarda el archivo yin_book.py y ejecuta el código en la terminal usando el comando python yin_book.py. La salida debe ser:
['H', 'ell', 'o, Wor', 'ld!']
['!', '@#$', '%^&*) ', 'Hello, Wor', 'ld!']
['N', 'one']
None

La salida coincide con los resultados esperados, lo que significa que la función yin_book_encryption está funcionando como se esperaba.

Entender la función yin_book_encryption

En este paso, entenderás la implementación de la función yin_book_encryption.

  1. La función yin_book_encryption toma una cadena text como entrada y devuelve una lista de partes cifradas.

  2. La función calculate_length es una función auxiliar que calcula la longitud de cada parte en función del índice dado. La longitud de la parte n es 1 + 2 + 3 +... + n.

  3. La función primero verifica si la entrada text está vacía. Si lo está, la función devuelve None.

  4. Luego, la función inicializa una lista vacía encryption_text para almacenar las partes cifradas.

  5. La función utiliza un bucle while para iterar a través del text y dividirlo en partes. En cada iteración:

    • La función calcula la longitud de la parte actual utilizando la función calculate_length.
    • La función extrae la parte actual del text utilizando rebanado y la agrega a la lista encryption_text.
    • La función actualiza el índice de inicio i y el índice de parte index para la siguiente iteración.
  6. Finalmente, la función devuelve la lista encryption_text que contiene las partes cifradas.

Al entender la implementación, ahora puedes usar la función yin_book_encryption en tus propios proyectos o modificarla para adaptarla a tus requisitos específicos.

✨ Revisar Solución y Practicar

Resumen

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