ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 62
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
my_str = 'Лист' # Создаем строку по заданному условию
print (my_str) # Выводим созданную строку на экран
a, b, c, d = my_str # Присваиваем каждой из новых переменных соответствующую букву из слова.
#Количество новых переменных и букв в созданной строке должны совпадать!!
print(a, b, c, d) # Выводим переменные на экран
print(type (a), type (b), type (c), type (d)) # Определяем тип каждой переменной
my_str = a + b + c + d # Выполняем обратное преобразование: получаем из переменных строку
Потребность в защите информации существовала издревле. Исторически вплоть до середины XX-го в. все существовавшие алгоритмы можно было разделить на два основных вида сокрытия секретных сообщений: алгоритмы замены, в которых каждый символ секретного сообщения заменялся на другой символ по определенным правилам, известным только посвященным; алгоритмы перестановки, в которых все символы перемешивались по определенным правилам и являлись секретом.
Так, например, одним из самых известных в истории способов сокрытия важной секретной информации является алгоритм Юлия Цезаря, названный, согласно легендам, в честь его изобретателя.
Классический алгоритм Юлия Цезаря
В классическом алгоритме Юлия Цезаря каждый символ исходного секретного сообщения заменяется символом из того же алфавита, отстоящим на три позиции далее. Например, для русского алфавита буква А будет заменена на букву Г, Б – на Д и т.д. Данный алгоритм относится к алгоритмам замены.
Рассмотрим реализацию алгоритма Юлия Цезаря на языке Python:
Задача. На вход программе подается секретное сообщение, состоящее не более, чем из 200 символов, заканчивающееся точкой (другие точки во входных данных отсутствуют). Необходимо зашифровать его следующим образом: заменить каждую английскую букву на букву, стоящую в английском алфавите на 3 буквы далее (алфавит считается циклическим, т.е., перед буквой A стоит буква Z), оставив другие символы неизменными. Строчные буквы при этом остаются строчными, а прописные – прописными.
Требуется написать программу, которая будет выводить на экран текст зашифрованного сообщения. Например, если исходный текст был таким:
Zb Ra Cx Dyk.,
то результат шифровки должен быть следующий:
Сe Ud Fa Gbn.
Решение. Из условия задачи известно, что длина секретного сообщения не превышает 200 символов. Это означает, что для хранения секретного (secret_text) и зашифрованного (cypher_text) сообщений можно использовать строковый тип данных string. Само сообщение может содержать 4 типа символов, каждый из которых необходимо обработать в отдельности: строчные (маленькие) буквы; прописные (большие) буквы; точка; остальные символы. Каждую строчную букву необходимо преобразовать в строчную, отстоящую на три позиции в английском алфавите, каждую прописную – преобразовать в прописную, отстоящую на три позиции в английском алфавите, все остальные символы необходимо оставить без изменений, а если очередным символом оказалась точка
, то закончить шифрование и вывести результат:
secret_text = input('Введите секретное сообщение: ')
cypher_text = '' # зашифрованныйтекст
for symbol in secret_text:
if symbol == '.': # очередной символ – точка
cypher_text += symbol break # вывод из цикла, т.к сообщение закончилось
# очереднойсимвол – большаябуква
elif ord(symbol) in range(ord('A'), ord('Z') + 1):
if (ord(symbol) + 3) > ord('Z'):
cypher_text += chr(ord(symbol) + 3 - 26)
else : cypher_text += chr(ord(symbol) + 3)
# очередной символ – большая буква
elif ord(symbol) in range(ord('a'), ord('z') + 1):
if (ord(symbol) + 3) > ord('z'):
cypher_text += chr(ord(symbol) + 3 - 26)
else : cypher_text += chr(ord(symbol) + 3)
else: cypher_text += symbol # любойдругойсимвол
print(cypher_text) # выводзашифрованногосообщения
При решении данной задачи были использованы две встроенные функции ord() и chr(). Первая функция возвращает код символа, который является ее аргументом, из таблицы кодировок, вторая – обратная к ord(), возвращает символ по его коду.
Разновидности криптографического алгоритма Юлия Цезаря
Следует отметить, что существует бесконечное множество разновидностей криптографического алгоритма Юлия Цезаря. Приведем некоторые из возможных модификаций условия данного алгоритма:
- замена каждой буквы алфавита на букву, стоящую в английском алфавите на K букв далее (алфавит считается циклическим, т.е., перед буквой A стоит буква Z), оставив другие символы неизменными. Строчные буквы при этом остаются строчными, а прописные – прописными;
- замена каждой буквы алфавита на букву, стоящую в английском алфавите на K букв ранее (алфавит считается циклическим, т.е., перед буквой A стоит буква Z), оставив другие символы неизменными. Строчные буквы при этом остаются строчными, а прописные – прописными;
- замена каждой буквы алфавита на букву, стоящую в английском алфавите на K букв далее (алфавит считается циклическим, т.е., перед буквой A стоит буква Z), оставив другие символы неизменными. Строчные буквы при этом преобразуются в прописные, а прописные остаются прописными;
- замена каждой буквы алфавита на букву, стоящую в английском алфавите на K букв ранее, оставив другие символы неизменными. Строчные буквы при этом преобразуются в прописные, прописные остаются прописными, каждая цифра заменяется на следующую за ней, другие символы остаются неизменными (алфавит считается циклическим, т.е., перед буквой A стоит буква Z, перед цифрой 0 – цифра 9).
Задания на лабораторную работу №4 (по вариантам)
Написать программы в среде IDLE в соответствии с номером своего варианта. Номер варианта уточняйте у преподавателя
Номер варианта | Задание №1 | Задание №2 | Задание №3 | Задание №4 |
| Работа со строками | Работа со строками | Перевод чисел | s = "У лукоморья 123 дуб зеленый 456" |
1 | Вводится слово. Необходимо определить, является ли это слово палиндромом (читается одинаково и вперед и назад, например, слово «Анна» – палиндром). Вывести True, если слово палиндром и False – в противном случае. Программу реализовывать без использования условного оператора if. | Создать строку «Примеры». Получить из заданной строки: – второй символ строки; – распаковать последовательность в переменные, определить их тип, сделать обратное преобразование из переменных в строку. | Строку, представляющую число в шестнадцатеричной системе счисления, введенную по запросу с клавиатуры, в случае правильной записи, преобразовать в десятичное число и результат вывести на экран. В противном случае предложить ввести число в шестнадцатеричной системе заново. | Заменить в строке s первый символ на 'О'. Результат вывести на экран |
2 | Вводится пароль. Убедиться, что пароль введен корректно по следующим критериям: - число символов не менее 8; - присутствует хотя бы один из символов «$#!?-_»; - присутствует хотя бы один из символов заглавной буквы латинского алфавита (A-D). Вывести True, если пароль корректен и False – в противном случае. Программу реализовывать без использования условного оператора if. | Создать строку «Задачи». Получить из заданной строки: – четвертый символ строки; – получить слово «дачи» одной операцией; | Строку, представляющую число в восьмеричной системе счисления, введенную по запросу с клавиатуры, в случае правильной записи, преобразовать в десятичное число и результат вывести на экран. В противном случае предложить ввести число в шестнадцатеричной системе заново. | Определить, сколько раз в строке s встречается буква 'у'. |
3 | Вводится строка из нескольких слов, слова разделены пробелом. Убедиться, что первое и последнее слово во введенной строке не совпадают. Вывести True, если это так и False – в противном случае. Программу реализовать без использования условного оператора if. | Создать строку «Задачи». Получить из заданной строки: – вывести элементы строки со 2 по 4; – получить срез последних 4-х элементов; | Число из десятичной системы счисления, введенное по запросу с клавиатуры, в случае правильной записи преобразовать в восьмеричную систему и результат вывести на экран. В противном случае предложить ввести десятичное число заново. | Определить, состоит ли строка s только из букв, ЕСЛИ нет, ТО вывести строку в верхнем регистре. |
4 | Вводится строка с одним арифметическим действием (сложением) для двух целых чисел. Например, «5+3» или «7 + 2». Обратите внимание на возможные пробелы до и после оператора +. Вычислить, указанное в строке арифметическое действие и результат вывести на экран | Создать строку «Примеры». Получить из заданной строки: – проверить, входят ли строки «при» и «имр» в исходную строку; – создать 3 копии исходной строки; | Число из десятичной системы счисления, введенное по запросу с клавиатуры, в случае правильной записи преобразовать в двоичную систему и результат вывести на экран. В противном случае предложить ввести десятичное число заново. | Определить длину строки s. ЕСЛИ длина строки превышает 4 символа, ТО вывести строку в нижнем регистре. |
5 | Вводится строка. Найти первый индекс начала фрагмента «ра» во введенной строке. Результат вывести на экран. | Создать строку «Задачи». Получить из заданной строки: – получить срез последних 4-х элементов; - распаковать последовательность в переменные, определить их тип, сделать обратное преобразование из переменных в строку. | Двоичное число, введенное по запросу с клавиатуры, в случае правильной записи преобразовать в десятичное число и результат вывести на экран. В противном случае предложить ввести двоичное число заново. | Определить, встречается ли в строке s буква 'я'. Вывести на экран ее позицию (индекс) в строке. |
Контрольные вопросы:
1. Дайте определение строки в Pythonе. В чем их особенности.
2. Перечислите операции (команды) работы со строками и их описание, которые вы использовали при выполнении своей лабораторной работы.
3. Какие методы (алгоритмы) защиты информации существовали исторически первыми? В чем их суть?
4. В чем суть шрифта Цезаря?
Требования к защите отчетной документации.
По каждой выполненной лабораторной работе оформляется отдельный отчет (представляется к защите в виде файла текстового формата Word (с расширением *.doc или *.docx)
Отчет по лабораторной работе должен содержать:
- титульный лист (с датой предоставления отчета)
- цели и задачи, описание методики проведения работы, перечень используемых инструментальных средств;
- результаты выполнения индивидуальных практических заданий (тексты программ и результаты работы программ):
-
Иллюстративные материалы (снимки экрана и (или) иные графические материалы), поясняющие процесс и результаты выполнения работы; -
Анализ полученных результатов с собственными выводами исполнителя; -
Ответы на контрольные вопросы (при их наличии).
Защита результатов выполнения лабораторных работ
Все лабораторные работы выполняются индивидуально, защита работы производится в форме собеседования по материалу представленного отчета.
В процессе защиты оцениваются полнота и качество выполнения практических заданий, грамотность использования инструментальных средств, правильность и обоснованность выводов по результатам работы, качество оформления отчета.
Перечень основной и дополнительной литературы
Основная литература:
1. Шелудько, В. М. Основы программирования на языке высокого уровня Python: учебное пособие : [16+] / В. М. Шелудько. – Ростов-на-Дону ; Таганрог : Южный федеральный университет, 2017. – 147 с. : ил. – Режим доступа: по подписке. – URL: https://biblioclub.ru/index.php?page=book&id=500056 .
2. Северенс, Ч. Введение в программирование на Python / Ч. Северенс. – 2-е изд., испр. – Москва : Национальный Открытый Университет «ИНТУИТ», 2016. – 231 с. : схем., ил. – Режим доступа: по подписке. – URL: http://biblioclub.ru/
Дополнительная литература:
1. Абрамян, М.Э. Инструменты и методы разработки электронных образовательных ресурсов по компьютерным наукам / М.Э. Абрамян ; Министерство науки и высшего образования РФ, Южный федеральный университет. – Ростов-на-Дону ; Таганрог : Южный федеральный университет, 2018. – 261 с. : ил. – Режим доступа: по подписке. – URL: http://biblioclub.ru/
2. Хиценко, В.П. Основы программирования : учебное пособие / В.П. Хиценко ; Новосибирский государственный технический университет. – Новосибирск : Новосибирский государственный технический университет, 2015. – 83 с. : схем. – Режим доступа: по подписке. – URL: http://biblioclub.ru/