Реализация шифрования Цезаря

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

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

Введение

В этом проекте вы научитесь реализовывать Шифр Цезаря, простую и широко известную технику шифрования. Шифр Цезаря использует метод подстановки, чтобы заменить английские символы в сообщении на символ, находящийся на N позиций позже или ранее в алфавитной последовательности.

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

## Пример 1
text = "python"; encryption_text = "ravjqp"
## Пример 2
text = "pyThon"; encryption_text = "raVjqp"
## Пример 3
text = "Python31"; encryption_text = "Ravjqp31"
## Пример 4
text = None; encryption_text = None

🎯 Задачи

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

  • настраивать проектную среду и создавать необходимые файлы;
  • реализовывать функцию шифрования Цезаря для сдвига каждого английского символа в строке на 2 позиции вправо;
  • обрабатывать различные типы ввода, включая английские символы, неанглийские символы и значения NULL;
  • тестировать функцию шифрования Цезаря с использованием различных примеров ввода.

🏆 Достижения

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

  • понять основные принципы шифрования Шифром Цезаря;
  • реализовать функцию шифрования Цезаря на Python без использования стандартных или сторонних библиотек;
  • развить навыки в манипуляции со строками, кодировке символов и условной логике;
  • протестировать свой код, чтобы убедиться, что он соответствует требованиям проекта.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) 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{{"Реализация шифрования Цезаря"}} python/python_shell -.-> lab-302693{{"Реализация шифрования Цезаря"}} python/conditional_statements -.-> lab-302693{{"Реализация шифрования Цезаря"}} python/for_loops -.-> lab-302693{{"Реализация шифрования Цезаря"}} python/function_definition -.-> lab-302693{{"Реализация шифрования Цезаря"}} python/file_operations -.-> lab-302693{{"Реализация шифрования Цезаря"}} end

Реализация шифрования Цезаря

В этом шаге вы реализуете функцию шифрования Цезаря.

  1. Откройте файл caesar_cipher.py.

  2. Измените функцию caesar_encryption(text) для достижения требуемой функциональности:

    • Введите строку и сдвиньте каждый английский символ в строке на 2 позиции вправо.
    • Преобразуйте только полутонкие английские символы, оставьте остальное без изменений.
    • Регистр символов должен оставаться неизменным, например, A будет преобразован в C, а b будет преобразован в d.
  3. Замените комментарий """TODO""" следующим кодом:

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

Данный код реализует алгоритм шифрования Цезаря, как описано в требованиях проекта.

Тестирование шифрования Цезаря

В этом шаге вы будете тестировать функцию шифрования Цезаря с использованием некоторых примеров ввода.

  1. Добавьте следующий код в конец файла caesar_cipher.py:
if __name__ == "__main__":
    test_input_text = input()
    print(caesar_encryption(test_input_text))
  1. Сохраните файл caesar_cipher.py.
  2. Откройте терминал и перейдите в директорию /home/labex/project.
  3. Запустите скрипт caesar_cipher.py с использованием следующей команды:
python3 caesar_cipher.py
  1. Введите некоторый текст для тестирования и изучите зашифрованный вывод.

Проверка требований

В этом шаге вы проверите, соответствует ли ваша реализация требованиям проекта.

  1. Проверьте требования проекта и убедитесь, что ваша функция caesar_encryption(text):

    • Принимает строку и сдвигает каждый английский символ в строке на 2 позиции вправо.
    • Преобразует только полутонкие английские символы, оставляя остальное без изменений.
    • Сохраняет регистр символов, например, A преобразуется в C, а b преобразуется в d.
  2. Протестируйте свою функцию с использованием предоставленных примеров для проверки:

## Пример 1
text = "python"; encryption_text = "ravjqp"
## Пример 2
text = "pyThon"; encryption_text = "raVjqp"
## Пример 3
text = "Python31"; encryption_text = "Ravjqp31"
## Пример 4
text = None; encryption_text = None
  1. Убедитесь, что ваша функция правильно обрабатывает все тестовые случаи.

Поздравляем! Вы завершили проект Шифр Цезаря. Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь задавать их.

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

Резюме

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