Криптография
Скачать 6.6 Mb.
|
Введение Криптография - это наука и искусство шифрования. По крайней мере, с этого все начиналось. Сегодня понятие криптографии расширилось и включает в себя аутентификацию, цифровые подписи и множество других элементарных функций безопасности. Криптография охватывает различные области математики, теории связи, технические дисциплины, создающие фундамент для построения защиты данных и взлома шифров. Существует довольно много алгоритмов шифрования информации. Наиболее известным из древних шифров замены является шифр Цезаря, названный так в честь римского императора Гая Юлия Цезаря, который использовал его для секретной переписки со своими генералами. Шифр Цезаря является одним из наиболее изученных в криптографии, и он очень полезен тем, что иллюстрирует принципы модульной арифметики, одной из математических основ кодированного письма. Принцип сокрытия информации в данном шифре довольно не сложен. Каждая буква в сообщении заменяется другой буквой, расположенной в алфавите на определенной позиции правее. Чтобы расшифровать данное сообщение, нужно всего лишь знать на какое количество позиций необходимо сместить буквы. Специалисты расходятся во мнениях по поводу практического применения шифра Цезаря, кто-то, утверждает, что сам Гай Юлий Цезарь заменял букву текста, смещая на четыре позиции в алфавите, а кто-то говорит, что он смещал на 3 позиции относительно первоначальной буквы. Также нет точного ответа, в какую именно сторону необходимо было двигаться по алфавиту, вправо или влево. Для написания программы «Шифр Цезаря» используется среда разработки приложений Delphi, которая является предпочтительной для разработки приложений для Windows. Использование программного средства Delphi, для написания программы обусловлено тем, что оно имеет дружественный интерфейс и обладает возможностью размещения меню и окна в порядке, удобном для пользователя. Программное средство имеет достаточное количество функций, которые необходимы для правильного решения поставленных задач. Общее направление разработки в Delphi достаточно несложное. В первую очередь создается интерфейс. На этот процесс требуется около восьмидесяти процентов времени от общей разработки программы. Необходимые компоненты помещаются на поверхность Windows-окна и с помощью специального инструмента Object Inspector настраиваются их свойства. Данный инструмент может связывать действия таких компонентов: выбор мышью элемента из списка, нажатие на кнопку, применение кода для обработки. Простое приложение готово. При этом разработчик имеет в своём распоряжении удобную контекстную справочную систему, серьёзные средства отладки, средства совместной работы над проектом и многое другое. Создание компонентов ActiveX без применения Microsoft IDL, расширяет возможность web-сервера, не зная практически ничего об ASP или HTML XML. Формирование распределённых приложений на базе CORBA и СОМ, intranet и интернет приложений, используется для доступа к данным ODBC-драйверы, Borland DataBase Engine или Microsoft ADO. Язык Object Pascal используется в Delphi, он всё время дополняется и расширяется Borland. Данный язык по всем критериям поддерживает требования, которые предъявляются к объектно-ориентированному языку программирования. Перегрузка методов и подпрограмм (overload) в стиле C++, поддержка обработки исключительных ситуаций - относятся к числу не совсем удачных особенностей языка. Поддержка длинных строк в формате WideChar и AnsiChar стоит отнести к числу удачных особенностей. Тип AnsiStrmg даёт возможность использования всех успешных динамических размещений информации в памяти. Delphi автоматически производит выделение и сборку мусора, не доставляя никаких забот. Свободный стиль программирования имеет открытые варианты, массивы и вариантные массивы. Они позволяют размещать в памяти всё, что угодно и смешивают типы данных. Использование Delphi подходит для создания самых простых приложений, на разработку которых потребуется не более трёх часов. Также можно создать и серьезный проект, предназначенный для работы десятков и сотен пользователей. Для этого используются самые новые разработки в мире компьютерных технологий, при этом затраты времени и сил минимальны. 1. Постановка задачи Кодирование - это процесс присвоения экономической информации условных обозначений, подчиненных определенным правилам. Совокупность правил, по которым осуществляется кодирование, называется системой кодирования. Код является обозначением признака объекта в виде знака или группы знаков в соответствии с принятой системой кодирования. Различают два типа кодов: машинные и экономические. Машинные коды используют для управления ПК и представления команд, экономические объединяют все виды кодов, используемых для представления технико-экономической информации. Знаки, используемые в процессе кодирования, составляют азбуку кода. Число знаков буквенного кода, используемых в кодовом обозначении, называется основанием кода. Цифровая азбука кода состоит из цифр, смешанная - из букв и цифр. В вычислительной технике существует система, которая называется двоичная система кодирования, основанная на представлении данных последовательностью всего двух знаков: 0 и 1. Иногда системы кодирования называют системами счисления. Также есть восьмеричная (от 0 до 7), шестнадцатеричная (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, B, C, D, E, F) и десятичная (от 0 до 9) системы счисления. Кодирование информации тесно связано с применением методов сортировки, группировки, поиска. Эти методы определяют назначение и структуру кодов. Кодирование и обратный процесс - декодирование - выполняются при автоматизированной обработке данных многократно, начиная с составления документов или других носителей информации, передачи данных по каналам связи и заканчивая выдачей результативных сведений пользователю. Для кодирования экономической информации используются такие системы кодирования: порядковая, серийная, позиционная, шахматная (матричная), комбинированная. Порядковая система кодирования представляет собой такое обозначение позиционной номенклатуры, которое соответствует ее порядковым номерам. Порядковый код применяется для идентификации малозначительных, устоявшихся списков названий. Преимущества кода - легкость построения; недостатки - невозможность выделить классификационные группы и подгруппы признаков, невозможность расширения номенклатуры в случае новых названий объекта. Серийная система кодирования - дальнейшее развитие порядковой. Признаки предварительно группируются с учетом экономических требований. Каждой группе отводится серия номеров в порядке возрастания, но с учетом резерва есть свободные позиции на случай появления новых объектов. Преимущество этой системы - легкость расширения номенклатуры, когда принятая система группирования признаков не нарушается, недостаток - отсутствие автоматической возможности получения итогов. Позиционная система кодирования применяется для кодирования номенклатур с большим количеством знаков. Проводится классификация объектов с целью выделения групп, подгрупп, разновидностей признаков. Преимущества этой системы - обеспечение группирования данных по различным признакам, возможность автоматического сжатия информации, недостатки - многоразрядность, громоздкость. Шахматная система кодирования - разновидность позиционной. Обычно она связывает одновременно два признака в виде матрицы, где один признак (старший) размещается по горизонтали (по строкам), другой (младший) - по вертикали (по столбцам). Код строится в ячейках матрицы как составной из двух характеристик. Комбинированная система кодирования основывается на сочетании различных систем кодирования с учетом их предпочтений. В зависимости от конкретных случаев целесообразно использовать, например, серийно-позиционный код, построчно-серийный и т. д. Выбор конкретной системы кодирования зависит от объема кодированной номенклатуры, ее стабильности, от задач, стоящих перед системой, в частности от того, сколько времени потребуется на поиск данных, как и их полнота, надежность и достоверность. Кодирование информации в двоичном коде. Существуют разные способы кодирования и декодирования информации в компьютере. Это зависит от вида информации: текст, число, графическое изображение или звук. Для числа также важно, как оно будет использовано: в тексте, или в вычислениях, или в процессе ввода-вывода. Вся информация кодируется в двоичной системе счисления: с помощью цифр 0 и 1. Эти два символа называют двоичными цифрами или битами. Такой способ кодирования технически просто организовать: 1 - есть электрический сигнал, 0 - нет сигнала. Недостаток двоичного кодирования - длинные коды. Но в технике легче иметь дело с большим числом простых однотипных элементов, чем с небольшим числом сложных. Кодирование текстовой информации. При нажатии клавиши клавиатуры сигнал посылается в компьютер в виде двоичного числа, которое хранится в кодовой таблице. Кодовая таблица - это внутреннее представление символов в компьютере. В качестве стандарта в мире принята таблица ASCII (American Standart Code for Information Interchange - Американский стандартный код для обмена информацией). Для хранения двоичного кода одного символа выделен 1 байт = 8бит. Так как 1 бит принимает значение 0 или 1, то с помощью одного байта можно закодировать 28 = 256 различных символов, т.к. именно столько различных кодовых комбинаций можно составить. Эти комбинации и составляют таблицу ASCII. Например, буква S имеет код 01010011; при нажатии ее на клавиатуре происходит декодирование двоичного кода и по нему строится изображение символа на экране монитора. Стандарт ASCII определяет первые 128 символов: цифры, буквы латинского алфавита, управляющие символы. Вторая половина кодовой таблицы не определена американским стандартом и предназначена для национальных символов, псевдографических и некоторых нематематических символов. В разных странах могут использоваться различные варианты второй половины кодовой таблицы. Цифры кодируются по этому стандарту при вводе-выводе и если они встречаются в тексте. Если они участвуют в вычислениях, то осуществляется их преобразование в другой двоичный код. Кодирование чисел. В двоичной системе счисления для представления используются две цифры 0 и 1. Сравните: в десятичной системе счисления 435,6710 = 4 102 + 3 101 + 5 100 + 6 10-1 + 7 10-2 в десятичной системе счисления 10110,1012 = 1 24 +0 23 +1 22 +1 21 +0 20 +1 2-1 +0 2-2 +1 2-3 Действия с числами в двоичной системе счисления изучает наука двоичная арифметика. Все основные законы арифметических действий для таких чисел также выполняются. Для сравнения рассмотрим два варианта кодирования для числа 45. При использовании числа в тексте каждая цифра кодируется 8 битами в соответствии с ASCII (т.е. потребуется 2 байта): 4 - 01000011, 5 - 01010011. При использовании в вычислениях код этого числа получается по специальным правилам перевода из десятичной системы счисления в двоичную в виде 8-разрядного двоичного числа: 4510 = 001011012, что потребует 1 байт. Кодирование графической информации. Графический объект в компьютере может быть представлен как растровое или векторное изображение. От этого зависит и способ кодирования. Растровое изображение представляет собой совокупность точек различного цвета. Объем растрового изображения равен произведению количества точек на информационный объем одной точки, который зависит от количества возможных цветов. Для черно-белого изображения информационный объем точки равен 1 биту, т.к. она может быть либо белой, либо черной, что можно закодировать двумя цифрами 0 и 1. Рассмотрим, сколько потребуется бит для изображения точки: 8 цветов - 3 бита (8 = 23); для 16 цветов - 4 бита (16 = 24); для 256 цветов - 8 битов (1 байт). Различные цвета получаются из трех основных - красного, зеленого и синего. Векторное изображение представляет собой графический объект, состоящий из элементарных отрезков и дуг. Положение этих элементарных объектов определяется координатами точек и длиной радиуса. Для каждой линии указывается ее тип (сплошная, пунктирная, штрих-пунктирная), толщина и цвет. Информация о векторном изображении кодируется как обычная буквенно-цифровая и обрабатывается специальными программами. Кодирование звуковой информации. Звуковая информация может быть представлена последовательностью элементарных звуков (фонем) и пауз между ними. Каждый звук кодируется и хранится в памяти. Вывод звуков из компьютера осуществляется синтезатором речи, который считывает из памяти хранящийся код звука. Гораздо сложнее преобразовать речь человека в код, т.к. живая речь имеет большое разнообразие оттенков. Каждое произнесенное слово должно сравнивать с предварительно занесенным в память компьютера эталоном, и при их совпадении происходит его распознавание и запись. Тема: Разработать программу для Windows «Шифр Цезаря». Условие задачи: «Шифр Цезаря» реализует следующее преобразование текста: каждая буква исходного текста заменяется третьей после нее буквой в алфавите, который считается написанным по кругу. Объект исследования - шифрование и дешифрование текста, для обеспечения доступа к файлам определенному кругу лиц. За основу создания данной программы шифрования взята технология шифра Цезаря. Задачи исследования: ) Проанализировать научную литературу о криптографии. ) Разработка автоматизированной системы шифрования методом шифра Цезаря. Методологическую основу исследования составляет литература о различных методах шифрования и использовании их на практике. Методы исследования. Для решения поставленных задач использовались методы эмпирического исследования: анализ литературы по теме исследования, сравнительно-сопоставительного анализ; обобщения и систематизации полученных данных, разработка программного обеспечения. Практическая значимость исследования. Благодаря проделанной работе появилось программное обеспечение. Создание его позволило проникнуть в значимость информационной безопасности, понять ее аспекты и в дальнейшем использовать более продвинутые и более защищенные методы шифрования данных. Назначение и условия применения программы. Программный продукт «Шифр Цезаря» предназначен для шифрования и дешифрования информации методом шифра Цезаря, запись зашифрованных данных в файл, а также открытие файла для просмотра его содержимого. Он, возможно, ориентирован на предприятия с малым количеством денежных средств, программа облегчает работу передачи конфиденциальной информации. Хотя проект в последующем требует доработок. Программа создана главным образом для малых предприятий с небольшим уровнем секретности. Входные и выходные данные. В качестве входных данных выступает информация, которую необходимо зашифровать, вводимая в текстовые поля. Перечень выходных данных: ) Зашифрованное сообщение, которое можно записать в файл; ) Прочитанное из файла зашифрованное сообщение; ) Расшифрованная информация; ) Файл с его полной записанной информацией. Управление формой осуществляется с помощью кнопок, которые отвечают за различные действия с программой. Цезарь применял следующий алгоритм, для шифрования своих посланий он брал первую букву открытого текста и сдвигал ее на 3 позиции вперед в алфавите, таким образом, получал букву шифралфавита. Шифр Цезаря относится к симметричным алгоритмам. Симметричные алгоритмы представляют собой алгоритмы, в которых ключ шифрования может быть рассчитан по ключу дешифрирования и наоборот. В большинстве симметричных систем ключи шифрования и дешифрирования одни и те же. Эти алгоритмы также называют алгоритмами с секретным ключом или алгоритмами с одним ключом. Для работы такой системы требуется, чтобы отправитель и получатель согласовали используемый ключ перед началом безопасной передачи сообщения (имели защищенный канал для передачи ключа). Безопасность симметричного алгоритма определяется ключом, т.о. раскрытие ключа дает возможность злоумышленнику шифровать и дешифрировать все сообщения. Достоинством этой системы является простота шифрования и дешифрования. К недостаткам системы Цезаря следует отнести: подстановки, выполняемые в соответствии с системой Цезаря, не маскируют частот появления различных букв исходного и отрытого текста; сохраняется алфавитный порядок в последовательности заменяющих букв; при изменении значения ключа изменяются только начальные позиции такой последовательности; число возможных ключей мало; шифр Цезаря легко вскрывается на основе анализа частот появления букв в шифре. В разрабатываемой программе ключ равен 3. Программа предусматривает вводить текст в окно программы или загружать из внешнего файла. На панели инструментов программы необходимо предусмотреть кнопки «Кодировать» и «Декодировать». При нажатии кнопки «Кодировать» программа последовательно считывает символ, в случае, если данный символ является буквой русского алфавита, то программа заменяет его на следующую букву алфавита с шагом равным трем. Если символ не является буквой русского алфавита, то программа оставляет его без изменений. Буквы английского алфавиты остается также без изменений. При нажатии кнопки «Декодировать» программа последовательно считывает символ, в случае, если данный символ является буквой русского алфавита, то программа заменяет его на предыдущую букву русского алфавита с шагом равным трем. Если символ не является буквой русского алфавита, то программа оставляет его без изменений. Программа предусматривает кодирование/декодирование текста как набранного вручную, так и загруженного из файла. Закодированный или расшифрованный текст можно также сохранить во внешний файл. Алгоритм работы программы приведен в Приложении 1. . Разработка рабочего проекта программа шифр кодирование Общая характеристика Delphi. В настоящее время программирование бурно развивается, как с точки зрения расширения круга решаемых им задач, так и с точки зрения существенного усложнения используемых в программировании технологий Причем особо необходимо отметить немалые размеры разрабатываемых программных продуктов. Все это требует максимального упрощения и ускорения процесса разработки приложений и использования ранее реализованных программных фрагментов. Такие требования к современному программированию привели к созданию многочисленных RAD-систем (от англ. RAD - Rapid Application Development - быстрая разработка приложений), представляющих собой интегрированные среды разработчика, включающие в себя: средства быстрого и удобного построения программ, в том числе визуального; встроенные компиляторы и отладчики; системы коллективной разработки проектов и т.д. Одной из таких RAD-систем является Delphi. Итак, Delphi - это объектно-ориентированная среда для визуального проектирования Windows приложений с развитыми механизмами повторного использования программного кода. Основным конкурентом Delphi является среда разработки Microsoft Visual C++, имеющая свои преимущества и недостатки, однако являющаяся более популярной, в основном, в силу того, что разработана именно фирмой Microsoft. Существенной чертой Delphi является компонентная модель разработки программных продуктов. Суть модели заключается в поддержке системой постоянно расширяемого набора объектных компонентов, из которых и строится программа. Компоненты в Delphi просты для использования и развития, как результат сокрытия значительной части той структуры программы, которая близка к взаимодействию с операционной системой. Таким образом, для создания в Delphi несложных программных продуктов совершенно не обязательно понимать внутреннюю структуру Windows-приложения, получаемого после разработки в Delphi. Достаточно просто уметь работать с некоторыми компонентами, поставляемыми вместе со средой разработчика. При этом начать работу со средой можно практически без предварительного ознакомления, а написание первого приложения не потребует углубления в особенности системы. Этому отчасти способствует удобный интерфейс среды разработчика, не перегруженный излишними вопросами к разработчику. Однако такой подход совершенно неприемлем для серьезного программирования, и, рано или поздно, придется освоить и основы программирования под ОС Windows, и серьезно изучить саму среду разработки Delphi, а также возможности, которые она предоставляет. Кроме того, конечно же, для создания качественных программных продуктов необходимо глубокое понимание компонентной модели. Место Delphi в современном программировании. Наиболее существенный отрыв Delphi от ближайших аналогов состоит в действительно быстрой разработке приложений, обладающих сложным пользовательским интерфейсом, особенно имеющим сильные взаимосвязи между элементами управления, расположенными в окнах программы. Также Delphi предлагает довольно мощный набор компонентов для работы с базами данных. Причем иерархия компонентов для работы с БД организована таким образом, что практически неважно, какой именно базой данных пользуется приложение - это может быть и локальная БД и промышленный сервер, типа Oracle или MS SQL Server. Существенным преимуществом Delphi в этой области является возможность управления базами данных на логическом уровне, соответствующем понятиям самих баз данных, без использования низкоуровневых запросов к драйверам. Такие возможности Delphi обусловили ее широкую применяемость при разработке АСУП - автоматизированных систем управления предприятиями. Однако это не единственная область применения, так как возможности Delphi не ограничиваются вышеперечисленными. Delphi является языком программирования широкого назначения и позволяет разработать программный продукт любой сложности для любой области. Даже если какие-либо возможности и не поддерживаются напрямую, то этот недостаток может быть исправлен добавлением соответствующих компонентов в систему. Такой подход касается, например, технологии DirectX, не поддерживаемой Delphi в ее исходной комплектации, но существуют компоненты для использования DirectX, которые легко интегрируются в среду разработки. В любом случае, подпрограммы, реализованные в других Windows языках программирования, могут быть использованы в Delphi через механизм динамически компонуемых библиотек (от англ. Dynamic Link Library - DLL - Динамически компонуемая библиотека). Заметим, что многие системные библиотеки Windows изначально подключены к Delphi, а вызов функций из них ничем не отличается от использования обычных библиотек Pascal. С появлением среды разработки Kylix под операционную систему Linux, полностью соответствующую Delphi за исключением некоторых аспектов, связанных с различиями в технологиях, используемых в этих операционных системах, часть приложений, написанных в Delphi, стала переносимой под Linux, что открывает еще более широкие возможности этой среды разработки. Достоинства языка программирования. Простота, скорость и эффективность Delphi объясняют ее популярность. Delphi имеет один из самых быстрых компиляторов, порождающий, тем не менее, весьма и весьма неплохой объектный код. Есть и другие достоинства: простота изучения Object Pascal; облегчающие жизнь нововведения - вроде свойств (properties); программы, написанные на Delphi, не требуется снабжать дополнительными библиотеками (в отличие от связки C++/MFC). В самом деле, VCL предоставляет удобный, легко расширяемый объектно-ориентированный интерфейс к Windows, что ни в коей мере не мешает программисту опускаться в самые глубины Windows API. Создателям оригинальных компонентов это приходится делать довольно часто, в отличие от "просто программистов". Как было сказано выше, модель программирования в Delphi - компонентная, что позволяет пользоваться компонентами, написанными другими разработчиками, даже не имея их исходного кода и уж подавно не изучая его. В Интернете есть огромное количество компонентов, значительная часть которых распространяется бесплатно. Применение компонентной модели приводит к тому, что довольно многое в поведении объектов программировать не нужно вообще, и многое, на что в других средах ушли бы недели, можно сделать за часы или даже минуты. Оно и понятно - это ведь RAD-среда. К достоинствам можно отнести очень быстрый браузер классов и мгновенный вывод подсказки автозавершения кода (code completion). Если кратко - может все. Конечно, Object Pascal накладывает определенные ограничения, но для тех вещей, для которых ее писали, Delphi подходит практически оптимально. Из понравившихся (но, разумеется, нестандартных) "улучшений", внесенных Borland в Object Pascal, хотелось бы выделить свойства (properties) и перегружаемость процедур и функций (overloading). Определенные неудобства при работе с низкоуровневыми функциями API может вызвать то, что стандартным языком для API все же является С, и именно на нем пишутся все новые Software Development Kit (SDK) и заголовочные файлы к ним. Это ни в коем случае не означает, что вы не сможете работать с новыми SDK, просто вам придется написать несложный (но, возможно, объемный) код на Pascal, в котором определить интерфейсы данного SDK. Не поленитесь, однако, поискать на серверах, посвященных Delphi. Очень может быть, что эту работу кто-то уже сделал. Недостатки языка программирования. Их мало, но они есть. Главный, на мой взгляд, недостаток (и одновременно достоинство) - статическое присоединение (linking) библиотеки VCL и компонентов к исполняемому файлу. Справедливости ради надо сказать, что VCL можно линковать и динамически, но тогда с каждым своим приложением вам придется распространять еще и VCL, а это более 3 Мбайт. Однако если не увлекаться интерфейсными "наворотами" и использовать в программе минимально необходимое число компонентов, то исполняемый файл будет невелик. Другой недостаток (и опять же достоинство) состоит в том, что в используемой в Delphi парадигме форм (Forms) вся информация о форме, включая свойства, настройки компонентов, значения по умолчанию, хранится в exe-файле, причем не оптимальным образом. Анализ исходного кода VCL показывает, что при создании формы фактически происходит чуть ли не синтаксический разбор данных инициализации, что не может ее не замедлять. Третий недостаток, который кто-нибудь тоже может назвать достоинством, - это Object Pascal. Несмотря на простоту, эффективность и легкость в изучении, ему не хватает очень многих мощных средств C++. Мне, например, не достает шаблонов, перегрузки операторов и объектной модели, похожей на объектную модель C++ . Разочаровала Delphi и малым числом параметров оптимизации кода. Кроме того, заметна тенденция к "разрастанию" exe-файлов, генерируемых Delphi. Так, большинство небольших проектов, разработанных в Delphi 4, при перекомпиляции в Delphi 5 "растолстели" на 40-70 Кбайт, при этом, разумеется, не обретя новой функциональности. Система программирования Delphi версии 7 фирмы Enterprise (Borland) предоставляет наиболее широкие возможности для программирования приложений ОС Windows.- это продукт Borland International для быстрого создания приложений. Процесс создания интерфейса будущей программы напоминает забаву с игровым компьютерным конструктором. Поэтому RAD-среды еще называют визуальными средами разработки: какими мы видим рабочие и диалоговые окна программы при проектировании, такими они и будут, когда программа заработает. Высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в Microsoft Visual Basic (она не является RAD-системой) или в других инструментах визуального проектирования. В основе Delphi лежит язык Object Pascal, который является расширением объектно-ориентированного языка Pascal. В Delphi также входят локальный SQL-сервер, генераторы отчетов, библиотеки визуальных компонентов, и прочее, необходимое для того, чтобы чувствовать себя совершенно уверенным при профессиональной разработке информационных систем или просто программ для Windows-среды. Прежде всего Delphi предназначен для профессиональных разработчиков, желающих очень быстро разрабатывать приложения в архитектуре клиент-сервер. Delphi производит небольшие по размерам высокоэффективные исполняемые модули (.exe и .dll), поэтому в Delphi должны быть, прежде всего, заинтересованы те, кто разрабатывает продукты на продажу. С другой стороны небольшие по размерам и быстро исполняемые модули означают, что требования к клиентским рабочим местам существенно снижаются - это имеет немаловажное значение и для конечных пользователей. Преимущества Delphi по сравнению с аналогичными программными продуктами. быстрота разработки приложения (RAD); высокая производительность разработанного приложения; низкие требования разработанного приложения к ресурсам компьютера; наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi; возможность разработки новых компонентов и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах); удачная проработка иерархии объектов. Система программирования Delphi рассчитана на программирование различных приложений и предоставляет большое количество компонентов для этого. К тому же работодателей интересует, прежде всего, скорость и качество создания программ, а эти характеристики может обеспечить только среда визуального проектирования, способная взять на себя значительные объемы рутинной работы по подготовке приложений, а также согласовать деятельность группы постановщиков, кодировщиков, тестеров и технических писателей. Возможности Delphi полностью отвечают подобным требованиям и подходят для создания систем любой сложности. Основным конкурентом Borland Delphi 7 является её родной брат - RAD-среда Borland C++ Builder, технология работы с которой полностью совпадает с технологией, принятой в Delphi 7. Только в Delphi программный код пишется на языке программирования Паскаль, точнее на его объектно-ориентированной версии ObjectPascal, а не на языке C++. Для того чтобы обосновать, почему наш выбор остановился на Borland Delphi 7, достаточно просто перечислить некоторые недостатки языка С++ по сравнению с ObjectPascal: . Надо делать много инициализации (регистрировать класс окна, организовывать цикл обработки сообщений, создавать оконную функцию, пиктограмму и прочее…) и частично быть системным программистом. На Delphi-же системное программирование уже встроено и инициализация работает по умолчанию, поэтому программист главный упор делает на своих алгоритмах, а не на организации вспомогательных работ. . Значительно большая, по сравнению с Object Pascal, сложность языка, даже, несмотря на компактность кода, возникают сложности в его восприятии. . Одна особенность, на мой взгляд, языка С++ очень портит этот язык - он чувствителен к регистру символов, т.е. переменная A и переменная a - это разные переменные. . В Delphi классы (объекты) могут располагаться только в динамической памяти, а в C++ в любой памяти (статическая, стек, динамическая). Это добавляет безопасности программирования в Delphi. Интегрированная среда разработки Delphi (Delphi IDE) является многооконной системой. Она включает в себя все необходимое для быстрой разработки Windows-приложений, и может гибко настраиваться. Тем не менее, как и всякая другая программа, Delphi имеет некоторый стандартный, предусмотренный разработчиками вид, в котором она предстает вам при первом запуске. В таком "стандартном" варианте среда Delphi имеет 6 окон. Это: главное окно (Delphi 7 - Project1), окно дерева объектов (Object TreeView), окно инспектора объектов (Object Inspector), окно конструктора форм (Form1), а так же совмещенное окно редактора кода и проводника кода (на заднем плане, под Form1). При этом окно проводника пристыковано к левому краю окна редактора. Впрочем, ничего не мешает отсоединить проводник от редактора, или, наоборот, состыковать все окна, кроме главного и конструктора форм, в одном окне, или объединить их по какому-либо иному принципу. К вопросу об удобстве следует отметить, что предлагаемая разработчиками компоновка годится, в принципе, для любого экранного разрешения. Но если у вас имеется возможность установить разрешение экрана в значение 1280 на 1024 точки, то вы можете скомпоновать все кнопки главного окна в одной строке, а все освободившееся внизу место выделить для палитры компонентов. Такой шаг позволит иметь перед глазами гораздо большее количество категорий компонент, что положительно сказывается на продуктивности работы. В принципе, это можно сделать и при более низком разрешении, однако при этом частью кнопок на панелях инструментов придется пожертвовать. Содержание и предназначение панелей инструментов, имеющихся в начальном виде, следующее: Debug - отладка. Позволяет запустить программу (Run), приостановить ее выполнение (Pause), а так же выполнять построчное выполнение программы; Standard - стандартные. Служит для таких операций, как сохранение, создание, добавление и удаление файлов; View - вид. Используется для быстрого нахождения форм и файлов проекта; Desktops - рабочая среда. С помощью этих инструментов можно переключаться между различными настройками рабочей среды Delphi; Custom - произвольная. Изначально содержит одну-единственную кнопку - для вызова справки; Component palette - палитра компонентов. Содержит все доступные для разработки приложений компоненты. Отметим, что все инструментальные панели настраиваются: кнопки можно перемещать между панелями, добавлять на них новые, или же удалять. Для обычных панелей (Standard, View, Debug) это делается точно таким же образом, как во многих других современных Windows-приложениях (например, как в Word, т.е. при помощи окна настройки - Customize). Описание интерфейса. Юлий Цезарь был, якобы первым, кто придумал собственно шифр. Алфавит размещается по кругу на его часах (при этом в русском алфавите, после А идет Б, a после Я - А). Для зашифровки буквы текста заменяются буквами, отстоящими по кругу на заданное число букв дальше по ходу часовой стрелки. Если, скажем, сдвиг на 3, то вместо i-й используется (i+3)-я буква, например, вместо А пишется Г, а вместо Я пишется В. При расшифровке, наоборот, берут букву на заданное число букв ближе, т. е. двигаясь против часовой стрелки. Приложение «Шифр Цезаря» написано для ОС Windows. Его интерфейс соответствует требованиям, которые предъявляются к графическому интерфейсу пользователя. После запуска приложения «Шифр Цезаря» открывается окно, внешний вид которого имеет сходство с «Блокнотом» и приложением MS Word (Приложение 2, рис.1). В поле ввода необходимо набрать текст, который требуется зашифровать (Приложение 2, рис.2). После чего нажать кнопку «Кодировать», расположенную в верхней части панели инструментов. Результатом работы программы будет зашифрованный текст, изображенный на рисунке 3 Приложения 2. Знаки препинания не кодируются, а остаются в первоначальном виде. Закодированный текст можно расшифровать. Для этого необходимо нажать кнопку «Декодировать», расположенную в верхней части окна на панели инструментов. Текст для кодирования можно набрать в окне ввода, а можно загрузить из файла с расширением *.RTF, Для этого необходимо в верхней части окна в панели инструментов нажать Файл - Открыть (Приложение 2, рис. 4) и затем выбрать нужный файл (Приложение 2, рис. 5). Текст из файла автоматически подтянется в окно ввода. После чего его можно зашифровать, для этого нажимаем кнопку «Кодировать», расположенную в панели инструментов (Приложение 2, рис. 6). Программой предусмотрено шифрование только букв русского алфавита. Все символы, знаки препинания, числа, а также буквы английского алфавита остаются без изменений (Приложение 2, рис. 7) Полученный закодированный текст можно также сохранить на диске с расширением *.RTF, для этого надо нажать Файл - Сохранить как… (Приложение 2, рис. 8) и создать документ *.RTF, куда будет осуществлено сохранение файла (Приложение 2, рис. 9). Заключение При передаче информации происходит кодирование информации, и мы должны договориться о том, как понимать те или иные обозначения. Человек выражает свои мысли словами. Они являются алфавитным представлением информации. На уроках физики при рассмотрении какого-либо явления мы используем формулы. В этом случае говорят о языке алгебры. Формула - это математический код. Существует язык глухонемых, где символы - мимика и жесты; язык музыки, где символы - ноты и т.д. Основу любого языка составляет алфавит - конечный набор различных символов, из которых складывается сообщение. Одна и та же запись может нести разную смысловую нагрузку. Например, набор цифр 251299 может обозначать: массу объекта; длину объекта; расстояние между объектами; номер телефона; дату 25 декабря 1999 года. Эти примеры говорят, что для представления информации могут использоваться разные коды, и поэтому надо знать законы записи этих кодов, т.е. уметь кодировать. Код - набор условных обозначений для представления информации. Кодирование - процесс представления информации в виде кода. Кодирование сводится к использованию совокупности символов по строго определенным правилам. При переходе улицы мы встречаемся с кодированием информации в виде сигналов светофора. Водитель передает сигнал с помощью гудка или миганием фар. Кодировать информацию можно устно, письменно, жестами или сигналами любой другой природы. По мере развития техники появились разные способы кодирования информации. Во второй половине XIX века американский изобретатель Морзе изобрел удивительный код, который служит человечеству до сих пор. В качестве источников информации может выступать человек, техническое устройство, предметы, объекты живой и неживой природы. Получателей сообщения может быть несколько или один. В процессе обмена информацией мы совершаем две операции: кодирование и декодирование. При кодировании происходит переход от исходной формы представления информации в форму, удобную для хранения, передачи или обработки, а при декодировании - в обратном направлении. В результате выполнения курсовой работы были получены навыки составления алгоритма для поставленной задачи и воплощения этого алгоритма в текст программы, написанной в среде Delphi. А также было разработано программное средство, успешно решающее поставленную задачу, т.е. была написана программа, работающая в двух режимах, позволяющая шифровать и расшифровывать тексты «методом Цезаря». Основных методом, использованным при решении задачи, был метод перебора, вследствие чего скорость работы программы при больших исходных данных может уменьшаться. В наше время кодирование информации стало очень популярной темой для обсуждения, так как оно необходимо для передачи информации по интернету (например, банковские операции), защите непосредственно компьютерных систем от несанкционированного доступа и т. п. На конференциях по криптографии поднимаются самые разные темы, связанные с компьютерной безопасностью, высшей математикой, квантовой физикой, статистикой, гражданским и уголовным правом, проектирование микросхем, экстремальным программированием, проблемами пользовательского интерфейса и т. п. Мне кажется, в наше время надо больше уделять времени информационной безопасности. Хотя говорят, что не существует таких систем безопасности, которые нельзя было бы обойти, всегда найдется человек, который сможет это сделать. Но все равно надо стремиться огородить свою информацию от посторонних глаз. Сейчас Европа и другие страны планируют выделить деньги для защиты своей информации, для создания собственных автономных систем, таким образом снять зависимость от США. Глоссарий
Приложение Рис. 1. Общий вид приложения «Шифр Цезаря» Рис. 2. Кодирование текста Рис. 3. Зашифрованный текст Рис. 4. Загрузка внешнего файла. Рис. 5. Выбор внешнего файла для кодирования. Рис. 6. Кодирование текста Рис. 7. Закодированный текст Рис. 8. Сохранение кодированного текста программа шифр кодирование буква Рис. 9. Сохранение кодированного текста в файл |