Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Цифровая грамотность. В 2 частях. Ч.2. Разработка консольных приложений на языке программирования C. Учебное пособие.pdf
X
- •ВВЕДЕНИЕ
- •РЕКОМЕНДАЦИИ К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ
- •ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ
- •Раздел 1. ОСНОВЫ ПРОГРАММИРОВАНИЯ В СРЕДЕ ЯЗЫКА C
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Тема 1.4. Массивы. Обработка массивов
- •Раздел 2. ОСНОВЫ МОДУЛЬНОГО ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С
- •Тема 2.1. Пользовательские функции
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Тема 2.3. Файловый ввод/вывод
- •Контрольные вопросы
- •Контрольные вопросы
- •Контрольные вопросы
- •Задание 1.
- •Программный код:
- •Задание 2.
- •Программный код:
- •Задание 3.
- •Контрольные вопросы
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

Индивидуальные задания по теме «Файлы в языке C»
Вари-
1.
Текстовый файл A содержит компоненты, которые являются целыми числа-
2.
Текстовый файл A содержит компоненты, которые являются целыми числа-
3.
Текстовый файл A содержит компоненты, которые являются целыми числа-
4.
Текстовый файл A содержит компоненты, которые являются целыми числа-
5.
Текстовый файл A содержит компоненты, которые являются целыми числа-
6.
Текстовый файл A содержит компоненты, которые являются целыми числа-
7.
Текстовый файл A содержит компоненты, которые являются целыми числа-
8.
Текстовый файл A содержит компоненты, которые являются целыми числа-
9.
Текстовый файл A содержит компоненты, которые являются целыми числа-
Таблица 22
ант
Задание
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B все положительные числа этого файла, кратные 3
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B наименьшее значение из компонентов этого файла с четными
номерами
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B наибольшее значение из компонентов этого файла с четными
номерами
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B наименьшее значение из компонентов этого файла с нечетными номерами
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B наибольшее значение из компонентов этого файла с нечетными номерами
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B все отрицательные числа этого файла, кратные 4
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B нули и их количество
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B кубы всех положительных чисел этого файла
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл B квадраты всех отрицательных чисел этого файла
91

Окончание табл. 22
10.
Текстовый файл A содержит компоненты, которые являются целыми числа-
11.
Текстовый файл A содержит компоненты, которые являются целыми числа-
12.
Текстовый файл A содержит компоненты, которые являются целыми числа-
Вари-
ант
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл
тическое
ми, разделенными пробелами. Напишите программу, записывающую в текстовый файл
тельное число из этого файла
ми, разделенными пробелами. Напишите программу, записывающую в тек-
стовый файл
B все положительные числа этого файла и их среднее арифме-
B минимальное положительное число и максимальное отрица-
B числа, равные –1, и их количество
Контрольные вопросы
1. Как файл описан в программе?
Задание
2. Какая команда посимвольно считывает данные из файла?
3. Какая команда построчно считывает данные из файла?
4. Что понимается под двоичным файлом?
5. Какие команды в языке С работают с двоичными файлами?
ТЕМА 2.4. СОЗДАНИЕ КОНСОЛЬНОГО ПРИЛОЖЕНИЯ
С ЭЛЕМЕНТАМИ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
Для того чтобы обезопасить данные в разрабатываемом приложении,
необходимо запрограммировать защиту данных, включая базовый контроль
доступа к программе, в которой хранится и обрабатывается информация.
Базовый контроль доступа в систему можно сделать на логическом
уровне, а именно – организовать доступ в систему по паролю для несколь-
ких категорий возможных пользователей этой системы. Безопасность
паролей начинается с создания надежного пароля.
92

Рассмотрим требования к формированию надежного пароля2.
1. Пароль должен содержать не менее 8 символов, но лучше 14 или
больше.
2. Пароль должен состоять из комбинации прописных и строчных
букв, цифр, пробелов и специальных символов. Например: pMQSmu@$l1
3. Пароль не должен содержать:
– Личную информацию, которую легко узнать. Например: имя,
фамилию, дату рождения и т. д.
– Очевидные и простые слова, фразы, устойчивые выражения и набо-
ры символов, которые легко подобрать. Например: password, parol, abcd,
qwerty или asdfg, 1234567.
4. Должен значительно отличаться от ваших предыдущих паролей.
5. Пароль рекомендуется менять каждые 3 месяца.
6. Вам легко запомнить, но трудно догадаться другим. Попробуйте ис-
пользовать запоминающуюся фразу, например: «6MonkeysRLooking^:))».
Примечание. Если не хотите придумывать сами, Microsoft Edge может
создавать и запоминать для вас надежные уникальные пароли3.
Создав надежный пароль, следуйте этим рекомендациям, чтобы обес-
печить его безопасность:
Не сообщайте пароль никому. Даже другу или члену семьи.
Никогда не отправляйте пароль по электронной почте, в мгновенных
сообщениях или любым другим способом связи, который не является
надежно безопасным.
2
Как составить надежный пароль. – URL: https://support.kaspersky.ru/common/windows/3730.
3
Use Password Generator to create more secure passwords in Microsoft Edge. – URL:
https://support.microsoft.com/en-us/topic/use-password-generator-to-create-more-secure-passwords-in-microsoft-edgee9247e35-684b-4114-bb5e-fdea3e4ae3ff.
93

Используйте уникальный пароль для каждого сайта. Если мошенни-
ки украдут информацию о вашей учетной записи с одного сайта, они попытаются использовать эти учетные данные на сотнях других известных
веб-сайтов, таких как банковские услуги, социальные сети или интернетмагазины, надеясь, что вы повторно использовали пароль в другом месте. Это называется «атака с заполнением учетных данных», и это очень
распространено.
Если вы не хотите запоминать несколько паролей, рассмотрите воз-
можность использования менеджера паролей.
На физическом уровне защиту данных в разрабатываемом приложе-
нии можно реализовать с использованием криптографии.
Криптография (термин происходит от греческого слова kryptos, что
означает «скрытый») – это наука о методах обеспечения конфиденциальности, целостности данных, аутентификации, шифрования.
В компьютерных науках криптография относится к методам защиты
информации и технологий связи, базирующимся на математических концепциях и наборе основанных на правилах вычислений, называемых алгоритмами, для преобразования сообщений способами, которые трудно расшифровать. Эти детерминированные алгоритмы используются для генерации криптографических ключей, цифровой подписи, проверки для защиты
конфиденциальности данных, просмотра web-страниц в интернете и конфиденциальных сообщений, таких как транзакции по кредитным картам, электронная почта и др. Известно, что древние египтяне использовали эти методы в сложных иероглифах, а римскому императору Юлию Цезарю приписывают использование одного из первых современных шифров.
Существует несколько типов криптографии, каждая со своими уникальными функциями и приложениями. Некоторые из наиболее распространенных типов криптографии включают в себя:
94

– Криптография с симметричным ключом предполагает использо-
вание одного ключа для шифрования и дешифрования данных. И отправитель, и получатель используют один и тот же ключ, который должен храниться в секрете для обеспечения безопасности связи.
– Криптография с асимметричным ключом, также известная как
криптография с открытым ключом, использует пару ключей – открытый
ключ и закрытый ключ – для шифрования и расшифровки данных. Открытый
ключ доступен любому, а закрытый ключ хранится в секрете владельцем.
– Хеш-функции – это математический алгоритм, который преобразу-
ет данные любого размера в выходные данные фиксированного размера.
Хеш-функции часто используются для проверки целостности данных
и гарантии того, что они не были подделаны.
Криптография имеет широкий спектр приложений в современной свя-
зи, в том числе:
• Безопасные онлайн-транзакции. Криптография используется для
защиты онлайн-транзакций, таких как онлайн-банкинг и электронная
коммерция, путем шифрования конфиденциальных данных и защиты их
от несанкционированного доступа.
• Цифровые подписи используются для проверки подлинности и це-
лостности цифровых документов и гарантии того, что они не были подделаны.
• Защита паролем: пароли часто шифруются с использованием крип-
тографических алгоритмов, чтобы защитить их от кражи или перехвата.
Введение в базовое шифрование данных
В криптографии шифр Цезаря, также известный как шифр сдвига,
код Цезаря или сдвиг Цезаря, является одним из самых простых и широ-
ко известных методов шифрования.
Шифр Цезаря – это простой метод шифрования, который Юлий Це-
зарь использовал для отправки секретных сообщений своим союзникам.
95

Он работает путем сдвига букв в текстовом сообщении на определенное
количество позиций, известное как «сдвиг» или «ключ». Это тип шифра
замены, в котором каждая буква в открытом тексте заменяется буквой на
некоторое фиксированное количество позиций в алфавите. Например, при
смещении влево на 3 D будет заменено на A, E станет B и т. д. Метод
назван в честь Юлия Цезаря, который использовал его в своей личной переписке. Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и до сих
пор имеет современное применение в системе ROT134.
Особенности шифра Цезаря.
1. Шифр замены: шифр Цезаря – это тип шифра замены, в котором
каждая буква в открытом тексте заменяется буквой на некоторое фиксированное количество позиций вниз по алфавиту.
2. Фиксированный ключ: шифр Цезаря использует фиксированный
ключ, представляющий собой количество позиций, на которое сдвигаются
буквы. Этот ключ известен как отправителю, так и получателю.
3. Симметричное шифрование: это метод симметричного шифрова-
ния, означающий, что один и тот же ключ используется как для шифрования, так и для дешифрования.
4. Ограниченное пространство ключей: шифр Цезаря имеет очень огра-
ниченное пространство ключей, например, в английском языке – 26 возможных ключей, т. к. в английском алфавите всего 26 букв.
5. Уязвимость к атакам «методом грубой силы»: шифр Цезаря уяз-
вим для таких атак, потому что в каждом языке существует ограниченное
количество возможных ключей, и их все можно попробовать.
6. Простота реализации: шифр Цезаря очень прост в реализации
и требует только простых арифметических операций, что делает его популярным выбором для простых задач шифрования.
вой после нее в латинском алфавите. ROT13 – это частный случай шифра Цезаря.
4
ROT13 («повернуть на 13 позиций») – простой шифр с заменой букв, который заменяет букву 13-й бук-
96

Правила шифра Цезаря:
1. Выберите число от 1 до 25. Это будет значение сдвига.
2. Запишите буквы алфавита по порядку, от А до Я.
3. Сдвиньте каждую букву алфавита на выбранное значение сдвига.
Например, если значение сдвига равно 3, A станет D, B станет E, C станет F
и так далее.
4. Зашифруйте свое сообщение, заменив каждую букву соответству-
ющей смещенной буквой.
5. Чтобы расшифровать сообщение, просто выполните обратный про-
цесс, сдвинув каждую букву назад на ту же величину.
Алгоритм шифрования Цезаря
Вход:
1. Выберите значение сдвига от 1 до 25.
2. Запишите алфавит в порядке от A до Z.
3. Создайте новый алфавит, сдвинув каждую букву исходного алфа-
вита на значение сдвига. Например, если значение сдвига равно 3, новый
алфавит будет таким:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
DEFGHIJKLMNOPQRSTUVWXYZABC
4. Замените каждую букву сообщения соответствующей буквой из но-
вого алфавита. Например, если значение сдвига равно 3, слово «hello»
станет «khoor».
5. Чтобы расшифровать сообщение, сдвиньте каждую букву назад на
одинаковую величину. Например, если значение сдвига равно 3, зашифрованное сообщение «khoor» станет «hello».
Процедура:
• Перемещайтесь по заданному тексту по одному символу за раз.
97

• Каждый символ преобразуйте в соответствии с правилом, в зависи-
мости от того, шифруем или расшифровываем текст.
• Верните новую сгенерированную строку.
Программа, которая получает текст (строку) и значение сдвига (целое
число) и возвращает зашифрованный текст.
Контрольные вопросы
1. Каким образом можно организовать базовую защиту данных в раз-
рабатываемом приложении?
2. Сформулируйте правила формирования надежного пароля.
3. Что такое криптография?
4. Что такое шифр Цезаря?
5. В чем заключаются особенности шифра Цезаря?
Лабораторная работа № 11
ОСНОВЫ ПРОГРАММИРОВАНИЯ ЗАЩИЩЕННОГО
КОНСОЛЬНОГО ПРИЛОЖЕНИЯ
Задание 1.
Изучите и выполните пример 24, в котором продемонстрировано ко-
дирование и декодирование данных шифром Цезаря. Операции кодирования и декодирования оформлены в виде пользовательских функций
encrypt (int n) и decipher (int n) соответственно. Перед основной программой объявлены прототипы этих функций.
После выполнения примера необходимо модифицировать программ-
ный код: реализовать кодирование и декодирование информации, используя технологию модульного программирования (раздел 2, тема 2.2).
98

Программный код:
99

Задание 2.
Изучите пример 25, в котором продемонстрирована организация ме-
ню в консольном приложении. Реализуйте меню консольного приложения, дописав соответствующие функции для работы с файлами.
Программный код:
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
