Реализация Шифра железнодорожной решетки на Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь реализовать Шифр железнодорожной решетки (Rail Fence Cipher), простой метод шифрования, который переставляет символы в тексте для создания зашифрованного текста (шифртекста).

👀 Предварительный просмотр

Thisatext.issample

🎯 Задачи

В этом проекте вы научитесь:

  • Настраивать директорию Python - проекта и создавать необходимые файлы
  • Реализовывать алгоритм Шифра железнодорожной решетки на Python
  • Тестировать реализованную функцию шифрования

🏆 Достижения

После завершения этого проекта вы сможете:

  • Понять основные принципы Шифра железнодорожной решетки
  • Реализовать алгоритм шифрования Шифра железнодорожной решетки на Python
  • Протестировать и проверить правильность реализованной функции шифрования

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_operations("File Operations") subgraph Lab Skills python/strings -.-> lab-302758{{"Реализация Шифра железнодорожной решетки на Python"}} python/python_shell -.-> lab-302758{{"Реализация Шифра железнодорожной решетки на Python"}} python/lists -.-> lab-302758{{"Реализация Шифра железнодорожной решетки на Python"}} python/function_definition -.-> lab-302758{{"Реализация Шифра железнодорожной решетки на Python"}} python/file_operations -.-> lab-302758{{"Реализация Шифра железнодорожной решетки на Python"}} end

Реализация Шифра железнодорожной решетки

На этом шаге вы реализуете алгоритм шифрования Шифра железнодорожной решетки (Rail Fence Cipher) в файле fence.py.

  1. Откройте файл fence.py в текстовом редакторе.
  2. Добавьте следующий код в файл:
def rail_fence_cipher(text: str) -> str:
    """
    Encrypts the text using the Rail Fence Cipher method.

    Args:
        text (str): The text to be encrypted.

    Returns:
        str: The encrypted text.
    """
    if text is None or len(text.strip()) == 0:
        return None
    group = text.split()
    grouped_list = [group[i : i + 2] for i in range(0, len(group), 2)]

    first_part = [sublist[0] for sublist in grouped_list]
    second_part = [sublist[1] for sublist in grouped_list if len(sublist) > 1]

    encryption_text = "".join(first_part + second_part)
    return encryption_text


if __name__ == "__main__":
    print(rail_fence_cipher("This is a sample text."))
  1. Реализуйте функцию rail_fence_cipher, следуя этим шагам:

    • Проверьте, является ли входной text равным None или пустой строкой. Если это так, верните None.
    • Разделите text на группы по два символа каждый.
    • Извлеките первый символ из каждой группы и сохраните их в списке.
    • Извлеките второй символ из каждой группы и сохраните их в списке.
    • Объедините два списка, чтобы сформировать зашифрованный текст.
    • Верните зашифрованный текст.
  2. Сохраните файл fence.py.

Тестирование Шифра железнодорожной решетки

На этом шаге вы протестируете реализованный Шифр железнодорожной решетки (Rail Fence Cipher), запустив файл fence.py.

  1. Откройте терминал и перейдите в директорию проекта.
  2. Запустите файл fence.py:
python3 fence.py
  1. Вывод должен быть зашифрованным текстом:
Thisatext.issample

Поздравляем! Вы успешно реализовали Шифр железнодорожной решетки на Python.

✨ Проверить решение и практиковаться

Итог

Поздравляем! Вы завершили этот проект. Вы можете попрактиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.