Введение
В этом проекте вы научитесь реализовать алгоритм шифрования Полибия. Квадрат Полибия представляет собой сетку размером 5x5, которая сопоставляет каждую букву английского алфавита паре координат. Шифруя текст с использованием этого метода, вы можете создать закодированное сообщение, которое может быть расшифровано только тем, кто знает квадрат Полибия.
👀 Предварительный просмотр
## Example 1
text = "tynam"; encryption_text = "4454331132"
## Example 2
text = "tynam123"; encryption_text = "4454331132123"
## Example 3
text = "TYnam"; encryption_text = "4454331132"
## Example 4
text = None; encryption_text = None
🎯 Задачи
В этом проекте вы научитесь:
- Определять квадрат Полибия
- Удалять пробелы и преобразовывать текст в нижний регистр
- Обрабатывать пустой или
Noneввод - Шифровать текст с использованием квадрата Полибия
- Возвращать зашифрованный текст
🏆 Достижения
После завершения этого проекта вы сможете:
- Понять концепцию алгоритма шифрования Полибия
- Реализовать алгоритм шифрования Полибия на Python
- Шифровать и расшифровывать текст с использованием квадрата Полибия
- Обрабатывать различные сценарии ввода, включая пустой или
Noneввод
Удалить пробелы и преобразовать в нижний регистр
На этом этапе вы научитесь готовить входной текст к шифрованию, удаляя пробелы и преобразуя все символы в нижний регистр.
- Откройте файл
polybius.pyв вашем редакторе кода. - Добавьте следующий код в функцию
polybius_encryption():
## Remove spaces and convert to lowercase
text = text.replace(" ", "").lower()
Это удалит все пробелы во входном тексте и преобразует все символы в нижний регистр.
Обработка пустых или None-значений входных данных
На этом этапе вы научитесь обрабатывать случай, когда входной текст пуст или равен None.
- Добавьте следующий код в начало функции
polybius_encryption():
if text is None:
return None
if text == "":
return None
Это обеспечит возврат None функцией, если входной текст равен None или является пустой строкой.
- После завершения этого этапа код будет выглядеть следующим образом:
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Remove spaces and convert to lowercase
text = text.replace(" ", "").lower()
if text == "":
return None
Настройка квадрата Полибия
На этом этапе вы научитесь определять квадрат Полибия, который представляет собой сетку размером 5x5, содержащую 26 букв английского алфавита.
- После предыдущих этапов определите квадрат Полибия в виде списка списков, где каждый вложенный список представляет строку квадрата:
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"],
]
Этот квадрат Полибия будет использоваться для сопоставления букв входного текста их соответствующим координатам.
Шифрование текста
На этом этапе вы научитесь шифровать входной текст с использованием квадрата Полибия.
- После предыдущих этапов добавьте следующий код в функцию
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
Этот код проходит по каждому символу во входном тексте. Если символ является буквой, он находит соответствующие координаты в квадрате Полибия и добавляет их к строке encrypted_text. Если символ не является буквой, он добавляется в строку encrypted_text без изменений.
Возвращение зашифрованного текста
На этом последнем этапе вы научитесь возвращать зашифрованный текст из функции polybius_encryption().
- Добавьте следующую строку в конец функции
polybius_encryption():
return encrypted_text
Это обеспечит возврат зашифрованного текста в качестве результата работы функции.
Теперь полная функция polybius_encryption() должна выглядеть следующим образом:
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Remove spaces and convert to lowercase
text = text.replace(" ", "").lower()
if text == "":
return None
## Define the Polybius square
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))
Теперь вы завершили реализацию алгоритма шифрования Полибия. Вы можете протестировать свой код, запустив файл polybius.py и введя текст для шифрования.
- Запустите файл
polybius.pyи введите текст для шифрования.
python3 polybius.py
- Посмотрите на вывод зашифрованного текста.
## Example 1
text = "tynam"; encryption_text = "4454331132"
## Example 2
text = "tynam123"; encryption_text = "4454331132123"
## Example 3
text = "TYnam"; encryption_text = "4454331132"
## Example 4
text = None; encryption_text = None
Поздравляем! Вы успешно реализовали алгоритм шифрования Полибия на Python.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете попрактиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.



