Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИнфТехнКомпТехн

.pdf
Скачиваний:
18
Добавлен:
02.04.2015
Размер:
35.33 Mб
Скачать

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

Сообщение

Приезжаю_шестого

 

 

Ключ

Агаваагаваагаваа

 

 

Шифровка

Пнигзжюююаеотмго

 

 

 

 

Рис. 7.6 – шифровка многоалфавитной замены

В компьютере такая операция соответствует сложению кодов ascii символов сообщения и ключа по модулю 256.

Гаммирование

Процесс зашифрования заключается в генерации гаммы шифра и наложении этой гаммы на исходный открытый текст. Перед шифрованием открытые данные разбиваются на блоки т(0)i одинаковой длины (по 64 бита). Гамма шифра вырабатывается в виде последовательности блоков г(ш)i аналогичной длины (т(ш)i=г(ш)i+т(0)i, где + - побитовое сложение, i =1-m).

Процесс расшифрования сводится к повторной генерации шифра текста и наложение этой гаммы на зашифрованные данные t(0)i=г(ш)i+т(ш)i.

Основные шаги шифрования текстового файла методом гаммирования

1.Получить от пользователя ключ, имя входного и выходного файла.

2.Инициализировать генератор случайных чисел с помощью ключа. Открыть указанные файлы.

3.Прочитать строку из файла.

4.Получить случайное число.

5.Получить ascii-код очередного символа строки и увеличить его на случайное число, полученное на шаге 4.

6.Проверить правильность (допустимый диапазон) нового ascii-кода.

7.В выходную строку записать очередной символ, соответствующий ascii-коду, полученному на шаге 6.

8.Если не достигли конца входной строки, то перейти к шагу4.

9.Записать полученную строку в выходной файл.

10.Если не достигнут конец файла, то перейти к шагу 3.

11.Закрыть файлы.

Алгоритм дешифрации аналогичен алгоритму шифрации за исключением того, что из ascii –кода вычитаем 256 и проверяем больше ноля или нет.

Асимметричные криптосистемы Схема шифрования эль гамаля

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

Последовательность действий пользователя:

1.Получатель сообщения выбирает два больших числа p и g, причем p > g.

2.Получатель выбирает секретный ключ - случайное целое число x < p.

161

3.Вычисляется открытый ключ y= g x mod p.

4.Получатель выбирает целое число k, 1< k< p-1.

5.Шифрование сообщения (m): a= gk mod p, b=y k m mod p, где пара чисел (a,b) является шифротекстом.

Криптосистема шифрования данных rsa

Предложена в 1978 году авторами rivest, shamir и aldeman и основана на трудности разложения больших целых чисел на простые сомножители.

Последовательность действий пользователя:

1.Получатель выбирает 2 больших простых целых числа p и q, на основе которых вычисляет n=pq; m=(p-1)(q-1).

2.Получатель выбирает целое случайное число d, которое является взаимопростым со значением м, и вычисляет значение е из условия ed=1(mod m).

3.D и n публикуются как открытый ключ, е и м являются закрытым ключом.

4.Если s –сообщение и его длина: 1<len(s)<n, то зашифровать этот текст можно как s’=sd(mod n), то есть шифруется открытым ключом.

5.Получатель расшифровывает с помощью закрытого ключа: s=s’e(mod n).

Контрольные вопросы и задания

1.Цель и задачи криптографии.

2.Шифры одиночной перестановки и перестановки по ключевому слову. Шифр гронфельда.

3.Шифры двойной перестановки. Шифрование с помощью магического квадрата.

4.Шифр многоалфавитной замены и алгоритм его реализации.

5.Алгоритм шифрации двойным квадратом. Шифр enigma.

6.Алгоритм шифрования des.

7.Алгоритм шифрования гост 28147-89.

8.Алгоритм шифрования rsa.

9.Алгоритм шифрования эль гамаля.

10.Задачи и алгоритмы электронной подписи.

11.Задачи распределения ключей.

12.На языке с++ написать программу шифрования и дешифрования текстового файла методом, указанным преподавателем. В качестве примера алгоритма использовать алгоритм шифрования методом гаммирования.

Содержание отчета

1.Название работы.

2.Цель работы.

3.Блок-схему алгоритма шифрования.

4.Тексты программ.

162

Лабораторный цикл программирования по изучению программирования на языке Delphi (Object Pascal)

Лабораторный цикл содержит 19 работ по изучению программирования на языке Delphi (Object Pascal) в интегрированной среде разработки (ИСР) Delphi. Цикл может использоваться в лабораторном практикуме по дисциплинам:

1."Программирование на языках высокого уровня" (специальность 220400),

2."Языки программирования" (специальность 071900),

3."Информатика и программирование" (специальность 351400),

4."Высокоуровневые методы информатики и программирования" (специальность

351400).

Рекомендуемая литература: Основная:

1.Культин Н. Delphi 7. Основы программирования в Delphi 7. – СПб.: БХВ-Петербург, 2003.

2.Кандзюба С. Delphi 6/7. Базы данных и приложения. - К: ДиаСофт, 2002.

3.Фаронов В. Delphi 7. Учебный курс. – М.: Нолидж, 2003.

4.Карпов Б. Delphi: Специальный справочник. – СПб.: Питер, 2001.

Дополнительная:

1.Гофман В. и др. Delphi 6. – СПб.: БХВ, 2001.

2.Кэнту М. Delphi 5 для профессионалов. – СПб.: Питер, 2001.

Содержание отчета:

1.Название работы, цель работы, задание в соответствии с вариантом.

2.Блок-схем алгоритма в соответствии с номером варианта.

3.Коды программы.

4.Результаты выполнения программы на ПК.

5.Выводы.

Сохранение кодов

Каждый студент должен на локальной машине в папке D:\Users\Temp создать свою папку, в которой будут затем размещаться папки проектов.

Коды программ каждому студенту рекомендуется сохранять в своей папке. ИСР Delphi для каждого проекта создает несколько файлов. Чтобы файлы разных проектов не перепутывались, следует для каждого проекта создавать свою папку с именем, содержащим номер работы и номер задания (например, папку 03_1 для задания 1 работы 3). Рекомендуется имена проектов выбирать со ссылкой на дисциплину, номер работы и номер задания (например, Prg_3_1 – проект для задания

1 работы 3 по программированию). Файлы проекта Prg_3_1 нужно сохранить в папке 03_1. Для приложений надо сохранять и файл модуля. Рекомендуется для него выбирать имя, как у проекта, с добавлением символа подчеркивания в конце.

Для правильного обращения к файлам в консольных приложениях нужно использовать в именах папок только латиницу. Иерархия папок следующая:

Диск С

Дисциплина (например, Prg_YVU) Фамилия студента (например, Ivanov) Номер работы и задания (например, 03_1) Файлы проекта Prg_3_1.

В этой папке на каждом занятии следует сохранять файлы проекта (одно задание лабораторной работы – один проект, одна папка). Рекомендуется при выполнении работы

163

периодически сохранять незавершенные проекты в текущем состоянии, чтобы избежать потерь документов при сбоях.

Выполнение работ

ИСР Delphi позволяет разрабатывать разные программы, они называются проектами.

Влабораторном цикле создаются проекты двух типов:

Консольное приложение (Console Application) - под операционную систему DOS с символьным интерфейсом.

Приложение (Application) – под операционную систему Windows с графическим интерфейсом.

1. Интегрированная среда разработки Delphi

Подготовка к работе

По указанной литературе изучить:

1.Методику активизации интегрированной среды разработки (ИСР) Delphi.

2.Структуру главного меню и его пункты.

3.Опции выпадающих меню.

4.Контрольные вопросы

5.Активизация ИСР и выход из среды.

6.Окна ИСР.

7.Назначение и содержание главного окна ИСР.

8.Окно Инспектора объектов

9.Окно Конструктора формы.

10.Окно Дерева объектов.

11.Окно Редактора кода.

12.Панели инструментов.

13.Палитра компонент.

14.Главное меню главного окна ИСР. Опции пунктов Файл, Правка, Поиск, Вид, Проект, Выполнить, Компоненты, База данных, Сервис, Окно, Помощь.

15.Отличия проектов Приложение, Приложение CLX и Консольное приложение.

16.Использование встроенного подсказчика.

17.Кодировки ANSI и ASCII. Зачем нужно преобразование кодировок в консольном приложении?

Задание

1.Активизировать ИСР. Ознакомиться с окнами ИСР.

2.Создать проект консольного приложения Prg_1_1. Оно должно в символьном режиме выводить на экран фразу «Hello, World & Россия!». Для него использовать модуль RusTrans с функцией Rus, обеспечивающей перекодировку ANSI => ASCII для отображения кириллицы в консольном приложении.

3.Создать проект приложения Prg_1_2. Оно должно в графическом режиме при нажатии кнопки «Нажми» выводить на экран фразу «Hello World & Россия!». Пример выполнения

Задание 1. Активизировать ИСР. Ознакомиться с окнами ИСР.

При старте ИСР из Windows по соглашению создается заготовка проекта типа Приложение (Приложение – программа под Windows). Вид экрана при старте ИСР показан на Рис. 1.1. На нем представлены:

Главное окно вверху экрана.

Окно Дерева объектов под главным окном слева вверху.

164

Окно Инспектора объектов слева внизу.

Окно Конструктора формы (пустая форма с именем Form1) под главным окном справа.

Окно Редактора кода (позиционируется там же, где окно Конструктора формы, переключение клавишей F12). Это окно можно переместить, чтобы видеть одновременно и окно Конструктора формы (так сделано на Рис. 1.1).

Рисунок 1.1 - Окно ИСР в режиме Приложения

Для Приложения код исполняемой программы находится в двух файлах:

Файл проекта с расширением .dpr. Код проекта делается в ИСР автоматически, его не надо редактировать, по соглашению он не показывается. Его можно посмотреть, подключив модуль проекта командой Вид=>Модули, которая выводит окно выбора, в котором нужно выбрать модуль проекта. После этого в редакторе кода появиться закладка с именем проекта.

Файл модуля формы с расширением .pas.

Главное окно ИСР расположено в верхней части экрана и имеет вид Рис. 1.2. Окно содержит: строку заголовка с именем ИСР (Delphi 7) и именем проекта (по умолчанию Project1); под ним строка главного меню ИСР; ниже главного меню - слева панели инструментов; справа от них палитра компонент со страницами с закладками; ниже палитра компонент.

Рисунок 1.2 - Главное окно ИСР Панели инструментов содержат кнопки часто употребляемы

х команд для быстрого доступа (помещены в группы определенного функционального назначения):

Панель

 

 

Место размещения

Имя

Назначение

 

Под строкой главного меню слева.

Standard

Стандартная

 

 

View

Вид

 

 

Debug

Отладка

 

 

Custom

Пользователь

 

 

 

 

165

 

Component

 

Палитра Компоненты

 

Под панелями.

Desktops

 

Настройки

 

 

Список справа от панелей.

Пункты главного

меню главного окна ИСР.

 

 

Пункт

 

 

 

Назначение

 

File

 

Файл

 

Работа с файлами.

Edit

 

Правка

 

Редактирование.

Search

 

Поиск

 

Поиск фрагментов.

View

 

Вид

 

Выбор, что показывать.

Project

 

Проект

 

Операции с проектом.

Run

 

Запуск

 

Прогон и отладка.

Compone

 

Компоненты

 

Работа с компонентами.

Database

 

Базы Данных

 

Работа с базами данных.

Tools

 

Инструменты

 

Использование внешнего инструментария.

Windows

 

Окно

 

Перечень окон для выбора фокуса.

Help

 

Помощь

 

Контекстная.

Окно Конструктора формы – стандартное окно Windows с координатной сеткой для согласованного размещения компонент внутри формы. Вид окна в начале работы приведен на Рис. 1.3.

Рисунок 1.3 - Окно конструктора формы

Обычно размещается вверху слева от окна Конструктора формы. Рекомендуется не заслонять окно другими окнами,

так как оно часто требуется. Пример дан на Рис. 1.4. Содержит:

Заголовок.

Панель инструментов.

Список объектов формы в виде дерева. По мере заполнения формы компонентами дерево автоматически дополняется.

Рисунок 1.4 - Окно Дерева объектов

166

Окно Инспектора объектов обычно размещается слева внизу от окна Конструктора формы. Рекомендуется не заслонять окно другими окнами, так как оно часто требуется. Содержит:

Заголовок.

Под ним список объектов в форме с возможностью выбора

Ниже описание выделенного в форме (или выбранного в списке) объекта.

Описание объекта разделено на две страницы с закладками Свойства (Properties) и События (Events). Вид окна при-

веден на Рис. 1.5 (слева - страница свойств, справа - страница событий).

Рисунок 1.5 - Окно инспектора объектов

Свойства отображаются в двух столбцах: слева имя свойства, справа значения свойства. Некоторые свойства представляются списками. Признак списка - символ (+) или (-) слева от имени. Свойства могут сортироваться по алфавиту или по категориям (как на Рис. 1.5). При этом одно и то же свойство может повторяться в нескольких категориях.

События также отображаются в двух столбцах: слева имя события, справа имя обработчика этого события (может выбираться из списка). Имена событий начинаются с префикса On (в переводе означает На), за которым следует имя события на английском языке.

Редактор кода для Приложения.

Переключаем окно Конструктора формы на окно Редактора кода клавишей F12. Если окна совмещены, то происходит смена видимого окна. Если же окна видны одновременно, то происходит просто передача фокуса управления. Код модуля формы размещается в окне Редактора кода, показанном на Рис. 1.6. Обычно к нему слева "приклеивается" Проводник кода (Code Explorer), в котором в иерархической форме отображаются все объявления модуля (его можно отключить). Окно Редактора кода по соглашению имеет такие же размеры, как и окно Конструктора формы, и позиционируется там же для экономии места на экране.

167

Рисунок 1.6 - Окно Редактора кода для Приложения

В окне Редактора кода на Рис. 1.6 показан код модуля формы. Его ИСР формирует автоматически. В тексте использо-

вано синтаксическое выделение:

Зарезервированные слова полужирным шрифтом.

Комментарии курсивом синего цвета.

Директивы компилятора зеленым цветом.

Задание 2. Создать проект - Консольное приложение Prg_1_1. Оно должно выводить на экран фразу – Hello World & Россия!

Создаем консольное приложение, выбирая его в диалоговом окне команды Файл=>Новый=>Другое. ИСР выводит окно выбора типа проекта, показанное на Рис. 1.7. В нем выбираем «Консольное». ИСР в окне Редактора кода формирует заготовку для проекта, показанную на Рис. 1.8. Имя проекта по умолчанию содержит слово Project с номером в сеансе работы с ИСР. В консольном приложении формы (а значит и соответствующего ей модуля) нет, Инспектор объектов пустой, так как объектов в проекте нет. В заготовке программы проекта размещены:

Директива {$APPTYPE CONSOLE}, которая предписывает компилятору создавать консольное приложение.

Комментарий // Insert user code here (Вводите код пользователя здесь).

В панели Проводника кода (на Рис. 1.8 слева) указана ссылка на модуль SysUtils – системные утилиты. Этот модуль содержит наиболее часто употребляемые подпрограммы. Ссылку на него ИСР создает в строке uses автоматически.

Рисунок 1.7 - Окно выбора типа проекта

168

Рисунок 1.8 - Окно Редактора кода для консольного приложения

Код проекта (строки на языке Object Pascal) размещается в окне Редактора кода. Каркас кода формируется ИСР автоматически (эти строки не надо редактировать!!!). Пользователь добавляет в код строки, определяющие выполняемые проектом функции. Код проект сохраняем в папке 01_1. На Рис. 1.9 показано окно Редактора кода с кодом проекта.

Рисунок 1.9 - Код проекта задания 1

При запуске проекта получаем окно, показанное на Рис. 1.10 слева. Есть проблема – неправильное отображение букв кириллицы. Правильное отображение показано на этом же Рисунке справа. Причина ошибки - консольное приложение создается в ИСР, где используется операционная система Windows с кодировкой ANSI, а исполняется под управлением операционной системы MS DOS, использующей кодировку ASCII. Для решения проблемы нужно делать перекодировку букв кириллицы из стандарта ANSI в стандарт ASCII. Для этого в проект Prg_1_1 добавим ссылку на модуль RusTrans с функцией Rus преобразования строк ANSI в ASCII.

169

Рисунок 1.10 - Окно проекта задания 1 при исполнении

Код проекта после сделанных изменений показан на Рис. 1.11. В нем добавлена ссылка на модуль RusTrans, а в операторе вывода строка текста преобразуется функцией Rus. На Рис. 1.10 справа приведено окно работающего приложения с правильным отображением символов кириллицы.

Рисунок 1.11 – Код проекта

Задание 3

Создать проект приложения Prg_1_2. Оно должно при нажатии кнопки «Нажми» выводить на экран фразу – Hello, World!

Командой Файл => Новый => Приложение создаем новый проект Prg_1_2, файлы которого будем сохранять в папке

01_2. При этом ИСР автоматически в Редакторе кода создает заготовку модуля формы, включая в него в строке uses ссыл-

ки на подключаемые модули. Свойству caption (надпись) формы пРисвоим значение «Моя первая программа».

Вокне Конструктора формы размещаем два компонента:

кнопку Button1 с надписью «Нажми!»,

метку Label1 для вывода текста.

Вразделе interface кода модуля формы ИСР автоматически добавляет эти компоненты. Окно Конструктора формы проекта на этапе конструирования показано на Рис. 1.12.

170