Шифр Вижинера

Изложение процесса создания программы для упрощения работы с шифром Вижинера: шифровка, дешифровка текста; назначение, функции, достоинства программы; информационная база задачи; входная и выходная информация; система меню; программно-аппаратные ресурсы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.05.2014
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство сельского хозяйства и продовольствия Республики Беларусь

УО "Бобруйский государственный аграрно-экономический колледж"

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту по дисциплине

"Основы алгоритмизации и программирование"

Тема "Шифр Вижинера"

КП 7-П.020 105.081 ПЗ

Выполнил:

учащийся гр. 7-П 2 курса

отделения

"Программное обеспечение

информационных технологий"

А.С. Соловьёв

Руководитель: преподаватель

С.В. Скрипко

Бобруйск 2013

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ПОСТАНОВКА ЗАДАЧИ

1.1. Назначение и функции программы

1.2. Информационная база задачи

1.2.1. Входная информация

1.2.2. Выходная информация

1.3. Система меню

1.4 Контрольные примеры

2.ОПИСАНИЕ ПРОГРАММЫ

2.3. Программно-аппаратные ресурсы

3. ОПИСАНИЕ ПРИМЕНЕНИЯ

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ А Блок-схема программы

ПРИЛОЖЕНИЕ Б Листинг программы

Введение

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

Изначально криптография изучала методы шифрования информации - обратимого преобразования открытого (исходного) текста на основе секретного алгоритма и/или ключа в шифрованный текст (шифротекст). Традиционная криптография образует раздел симметричных криптосистем, в которых зашифрование и расшифрование проводится с использованием одного и того же секретного ключа. Помимо этого раздела современная криптография включает в себя асимметричные криптосистемы, системыэлектронной цифровой подписи (ЭЦП), хеш-функции, управление ключами, получение скрытой информации, квантовую криптографию.

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

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

Шифр Виженера - метод полиалфавитного шифрования буквенного текста с использованием ключевого слова. Этот метод является простой формой многоалфавитной замены. Шифр Виженера изобретался многократно. Впервые этот метод описал Джован Баттиста Беллазо в 1553 году. Метод прост для понимания и реализации, он является недоступным для простых методовкриптоанализа. Первое точное документированное описание многоалфавитного шифра было сформулированно Леоном Баттиста Альберти в 1467 году, для переключения между алфавитами использовался металлический шифровальный диск. Система Альберти переключает алфавиты после нескольких зашифрованных слов. Позднее, в 1518 году, Иоганн Трисемус в своей работе «Полиграфия» изобрел tabula recta - центральный компонент шифра Виженера.

То, что сейчас известно под шифром Виженера, впервые описал Джованни Батиста Беллазо. Он использовал идею Трисемуса, но добавил ключ для переключения алфавитов шифра через каждую букву.

Блез Виженер представил своё описание простого, но стойкого шифра перед комиссией Генриха III во Франции в 1586 году, и позднее изобретение шифра было присвоено именно ему. Давид Кан в своей книге «Взломщики кодов» отозвался об этом осуждающе, написав, что история «проигнорировала важный факт и назвала шифр именем Виженера, несмотря на то, что он ничего не сделал для его создания».

Шифр Виженера имел репутацию исключительно стойкого к «ручному» взлому. Известный писатель и математик Чарльз Лютвидж Доджсон (Льюис Кэрролл) назвал шифр Виженера невзламываемым в своей статье «Алфавитный шифр» опубликованной в детском журнале в 1868 году. В 1917 году Scientific American также отозвался о шифре Виженера, как о неподдающемся взлому. Это представление было опровергнуто после того, как Касиски полностью взломал шифр в XIX веке, хотя известны случаи взлома этого шифра некоторыми опытными криптоаналитиками ещё в XVI веке.

Шифр Виженера достаточно прост для использования в полевых условиях, особенно если применяются шифровальные диски. Например, «конфедераты» использовали медный шифровальный диск для шифра Виженера в ходе Гражданской войны. Послания Конфедерации были далеки от секретных, и их противники регулярно взламывали сообщения. Во время войны командование Конфедерации полагалось на три ключевых словосочетания: «Manchester Bluff», «Complete Victory» и - так как война подходила к концу - «Come Retribution».

Гилберт Вернам попытался улучшить взломанный шифр (он получил название шифр Вернама-Виженера в 1918 году), но, несмотря на его усовершенствования, шифр так и остался уязвимым к криптоанализу. Однако работа Вернама в конечном итоге всё же привела к получению шифра, который действительно невозможно взломать.

Программа предназначена для упрощения работы с шифрованием методом Вижинера. Обучает принципам шифрования методом Вижинера. Является простой в использовании. Может быть использована как специалистом, так и простым пользователем. Эта программа не займёт много места на жёстком диске, что позволит использовать информационные носители малых объёмов памяти. Если у вас возникли трудности в освоении программы вы можете воспользоваться справкой, которая поможет вам в решении вашей проблемы.

шифр вижинер дешифровка программные

1. Постановка задачи

Основные задачи стоящие перед приложением:

1. Создать программу обеспечивающую кодирование текстовой информации при помощи шифра Вижинера.

2. Создать программу, обеспечивающую шифровку/дешифровку текстовой информации при помощи шифра Вижинера.

3. Создать программу, обеспечивающую работу с текстовой информацией на основе шифра Вижинера с предоставлением возможности работать на одном языке (русском).

Предметной областью приложения является основы алгоритмизации и программирования, а также основы криптографии.

1.1 Назначение и функции программы

Данная программа предназначена для кодирования текстовой информации методом Вижинера. Она представляет возможность зашифровать текст на одном языке: русском.

В конечном итоге, программа создана для защиты информации пользователя.

Программа может быть применена в следующих областях:

· В учебных заведениях.

· Пользователями для передачи и хранения информации.

Основные функции, реализуемые с помощью программы:

· Шифровка текста.

· Дешифровка текста.

1.2 Информационная база задачи

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

1. Входная и выходная информация, то есть информация необходимая для работы программы.

2. Способы ввода и вывода информации.

3. Формы ввода и вывода информации, основные её характеристики.

4. Компоненты расположенные на формах.

1.2.1 Входная информация

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

Программа в процессе свой работы использует заданный массив букв русского алфавита.

1.2.2 Выходная информация

В результате выполнения программы на выходе мы получаем зашифрованный текст. Для дешифровки текста необходимо скопировать зашифрованный текст нажатием клавиш Ctrl+c и вставить его в поле «Исходный текст» нажатием клавиш Ctrl+v и нажать клавишу «Дешифровать».

Входную информацию можно получить при помощи нажатий клавиш «Шифровать» и «Дешифровать».

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

1.3 Система меню

Система меню включает в себя два пункта: Свойства и О программе. В свою очередь Свойства содержит:

Свойства:

1. Шифровать - эта функция предназначена для шифровки данных (горячая клавиша F1)

2. Дешифровать - эта функция предназначена для дешифровки данных (горячая клавиша F2)

3. Очистить всё - кнопка очищающая все поля в программе.

4. Выход - выход из программы.

1.4 Контрольные примеры

Пример №1:

В примере 1 я продемонстрирую работу программы с исходными данными: ключ - «Ель» и исходным текстом «Шифр Вижинера»

Скриншот

Ход действия

Введение ключа

Введение исходного текста

В правом окне показан зашифрованный текст

Дешифруем полученный результат

2. ОПИСАНИЕ ПРОГРАММЫ

Средством разработки данной программы является Delphi, которая обладает мощной технологией создания высокопроизводительных приложений под Windows с развитым интерфейсом. Позволяет достичь высокой скорости разработки за счёт снижения времени кодирования согласно концепции с помощью визуальной среды разработки. В рамках данного подхода можно разрабатывать системы различного типа: настольные приложения, приложения для сенсорных экранов, платёжных терминалов, а также приложения для баз данных, включая многозвенные, web-приложения.

Delphi позволяет:

· быстро создавать приложения с использованием метода визуального проектирования;

· разрабатывать приложения, интенсивно взаимодействующие с базами данных, управляющие аппаратным обеспечением в режиме реального времени, системы 3-х мерного моделирования, расчётные программы для прогнозирования, обработки изображений и многие другие;

· обеспечивать эффективное взаимодействие приложений с базами данных любой из 9 основных платформ СУБД;

· использовать тысячи бесплатных и коммерческих компонентов для создания интерфейсов, взаимодействия со специфическими базами данных, реализации многопоточного программирования, создания web-приложений, реализации прикладные алгоритмы и т.д.

2.1 Среда разработки

Средой разработки «Шифра Вижинера» является объектно-ориентированный язык программирования Object Pascal. Программа, с помощью которой разработан проект - Delphi 7.0.

Для разработки данной программы я выбрал этот язык потому, что среди всех языков, на данном этапе обучения, изученных мной, он является самым совершенным и удобным в использовании. Delphi относится к классу средств ускоренной разработки программ. Так же создаваемые с её помощью программы могут работать не только под управлением Windows.

2.2 Интерфейс

Форма 1

Рис.4 Шифр вижинера

На форме расположено 4 кнопки: «Шифровать», «Дешифровать», «Очисть всё» и «Выход»

· Buttom - эта кнопка предназначена для выполнения каких либо действий программы.

· Edit - это окно для ввода данных.

· Label - это окно в котором можно назвать функцию любо действие.

· Memo - это окно в котором выводится результат действий программы.

· MainMenu - головное меню программы, на котором размещены такие кнопки, как: «Свойства» и «О программе»

· XPManifest - эта функция предназначена для того что бы автоматически менять интерфейс программы под версию OC Windows.

MainMenu1. - расположены два компонента: «Свойства» и «О программе». В разделе «Свойства» находятся следующие компоненты: «Шифровать», «Дешифровать», «Очисть всё», «Выход».

Функция - «Шифровать» (быстрый доступ кнопка F1) производит шифровку введённую пользователем информации.

Функция - «Дешифровать» (быстрый доступ кнопка F2) производит дешифровку введённую пользователем информации.

Функция - «Очистить всё» (быстрый доступ кнопка F3) производит очистку всех полей.

Функция - «Выход» (быстрый доступ кнопка F4) производит выход из программы.

В разделе «О программе» находятся следующие компоненты: «О программе» и «Об авторе».

.

По нажатию кнопки «О программе» появится окно описания программы.

По нажатию кнопки «Об авторе» появится окно с именем и фамилией автора программы

2.3 Программно-аппаратные ресурсы

Минимальные системные требования:

· Операционная система Microsoft Windows 98/2000/XP/Vista/7.

· Процессор Pentium® 4 1,5 ГГц или аналогичный Athlon®.

· Оперативная память: 150 МБ.

· Жёсткий диск: 15 МБ свободного пространства.

· 3D-видеоадаптер с памятью 128 МБ, совместимый с DirectX® 9.0c (GeForceFX 5200 или Radeon 9500).

· Internet Explorer 8 и выше.

· DirectX 8 и выше.

· Клавиатура, мышь.

· LCD-монитор с разрешением экрана 1680*1050.

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

· Операционная система Microsoft Windows XP/Vista/7.

· Процессор: Intel Core i7 @ 3.0 GHz / AMD Phenom II X4 @ 3.4 GHz.

· Оперативная память: 256 МБ.

· Жёсткий диск: 20 МБ свободного пространства.

· 3D-видеоадаптер с памятью 512 МБ, совместимый с DirectX® 9.0c (nVidia GeForce GTX 560 или ATI Radeon HD 4870 x2).

· Internet Explorer 9 и выше.

· DirectX: 10 и выше.

· Клавиатура, мышь.

· LCD-монитор с разрешением экрана 5120Ч4096.

3. ОПИСАНИЕ ПРИМЕНЕНИЯ

Загружаем установочный диск. Запускаем имеющийся на нём установочный файл. Следуя простым указаниям устанавливаем данную программу. По умолчанию папкой установки является c:\Program Files\Шифр Вижинера\.

После установки программы её можно запустить или с папки, куда установилась программа, или с ярлыка на рабочем столе.

После запуска программы ориентируемся по лёгкому и простому интерфейсу программы. Он предельно понятен.

Для удаления программы снова запускаем установочный файл. Из предложенных действий в появившемся окне выбираем удалить. Начинается процесс удаления программы, после которого данный продукт будет полностью удалён с вашего компьютера. При открытии программы вы окажитесь в меню где сможете пользоваться функция «Шифровать»,«Дешифровать» и другими доступными функциями. После того как вы поработали можно завершить работу программой нажатием кнопки «Выход», кнопкой быстрого доступа F4 иди нажав клавишу Esc.

ЗАКЛЮЧЕНИЕ

Целью курсового проекта было создание программы для упрощения работы с Шифром Вижинера.

В процессе разработки курсового проекта были реализованы следующие действия: Шифровка и Дешифровка текста.

Программа обеспечивает полностью устойчивое функционирование и не нарушает целостность системы, системного реестра или системного программного обеспечения.

Основными достоинствами программы являются:

· Простота и удобство в использовании;

· Возможность быстрой очистки полей заполнения;

· Возможность работать в разных операционных системах;

· Низкие требования по эксплуатации;

· Экономия времени необходимые на вычисления;

На основании выше изложенного можно сделать вывод, что основные задачи, поставленные в курсовом проекте, решены и главная цель достигнута.

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

1. Архангельский А.Я. Программирование в Delphi 7-М.: ЗАО «Издательство БИНОМ», 2002 г. - 1200 с.

2. Архангельский А.П. Программирование в Delphi 5. - М.: Бином, 2000.

3. Бобровский С.И Delphi 7. Учебный курс. - СПб.: «Питер», 2005.

4. ГОСТ 19.104-78. Единая система программной документации. Основные надписи. - Введ. 81-07-01. - М.: Издательство стандартов, 2001.

5. ГОСТ 19.106-78. Единая система программной документации. Требования к программным документам, выполненным печатным способом. - Введ 81-07-01. - М.: Изд-во стандартов, 2001.

6. ГОСТ 19.201-78 Техническое задание. Требования к содержанию и оформлению. - Введ. 81-07-01. - М.: Издательство стандартов, 2001.

7. ГОСТ 19.301-2000 ЕСПД. Руководство оператора. - М.: Издательство стандартов, 2001.

8. ГОСТ 19.402-2000 ЕСПД. Описание программы. - М.: Издательство стандартов, 2001.

9. Кандзюба С.П., Громов В.Н. Delphi 6. Базы данных и приложения.

10. Кеноби О.В. Учебник начинающего джедая: Руководство по Delphi 7. - М.: Мир, 2005. - 101 с.

11. Кириллов В.В. Основы проектирования реляционных баз данных. Учебное пособие. СПб.: ИТМО, 1994. - 90 с.

12. Коффман Э.Б. Turbo Pascal, 5-е издание - М.: Издательский дом «Вильямс», 2002.

13. Лекции и упражнения. - К.: Издательство «ДинСофт», 2001. - 576 с.

14. Леоненков, А. В. Самоучитель UML / А. В. Леоненков. - СПб. : БХВ-Петербург, 2002. - 304 с.

15. Майкл Дж. Хернандес, Джон Л. Вьескас. SQL запросы для простых смертных. Практическое руководство по манипулированию данными в SQL.: Издательство Лори - М., 2003

16. Программирование в среде Delphi: Лабораторный практикум для студентов всех специальностей. Под общей редакцией Синицына А.К. - Мн.; БГУИР, 1998. - 94 с.

17. Скрипко С.В., Якушонок С.В. Методическое пособие по курсовому проектированию.

ПРИЛОЖЕНИЕ А

Блок-схема программы

ПРИЛОЖЕНИЕ Б

Листинг программы

Форма 1

После ввода пользователем входных данных по нажатию кнопки «Шифровать» будут выполнены следующие действия:

unit Unit1; // реализация метода Виженера

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, Grids, math, ExtCtrls, ActnMan,

ActnColorMaps, Menus, XPMan;// подключаемые модули

type

TForm1 = class(TForm) // форма

Edit1: TEdit; // ключ

Button1: TButton; // шифровать

Button2: TButton; // дешифровать

Button3: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Memo1: TMemo;

Memo2: TMemo;

Button5: TButton;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

XPManifest1: TXPManifest;

procedure FormCreate(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Button5Click(Sender: TObject);

procedure Memo2KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure N3Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

private

{ Private declarations }

SaveWindowProc: TWndMethod;

public

procedure TEditWindowProc(var Message: TMessage);

{ Public declarations }

end;

var

Form1: TForm1;

trs,trb:array [0..31] of char;

frs,frst:array [0..31] of real; // массивы частот

vig:array [1..32] of string; // таблица виженера

implementation

//Шифрование Виженера

function Viz_Crypt(s,key:string):string;

const

SizeA = 33; //Размер алфавита

RusA = 'абвгдежзийклмнопрстуфхцчшщъыьэюя '; //Алфавит

var i, P, t :integer;

temp:string;

begin

s:=AnsiLowerCase(s); // Нижний регистр

key:=AnsiLowerCase(key);

t:=0; // Символ ключа

for i := 1 to length(s) do // Удаляем посторонние символы

if pos(s[i],RusA)<>0 then // ищем русские буквы

temp:=temp+s[i];

s:=temp;

for i:=1 to length(s) do

begin

inc(t); // Увеличиваем на 1

if t>length(key) then t:=1; // распространяем ключ по тексту

P:=pos(s[i],RusA)+pos(key[t],RusA);//Ищем новую позицию

P:=P-1;

if P>SizeA then P:=P-SizeA; // Если больше 33

Result:=Result+RusA[P]; // Получаем шифрованный текст

end;

end;

//Дешифрование Виженера

function Viz_DeCrypt(s,key:string):string;

const

SizeA = 33; //Размер алфавита

RusA = 'абвгдежзийклмнопрстуфхцчшщъыьэюя '; //Алфавит

var i, P, t :integer;

temp:string;

begin

s:=AnsilowerCase(s); // нижний регистр

key:=AnsilowerCase(key);

t:=0;

for i := 1 to length(s) do // Удаляем посторонние символы

if pos(s[i],RusA)<>0 then // ищем русские буквы

temp:=temp+s[i];

s:=temp;

for i:=1 to length(s) do

begin

inc(t); // увеличиваем на 1

if t>length(key) then t:=1;

P:=pos(s[i],RusA)-pos(key[t],RusA);// поиск новой позиции

P:=P+1;

if P<=0 then P:=P+SizeA; // если больше 33

Result:=Result+RusA[P]; // получаем расшифрованный текст

end;

end;

//функция возвращает наибольший общий делитель двух чисел

function nod(a,b:longint):longint;

begin

while (a<>0) and (b<>0) do

if a>=b then a:=a mod b // mod возвращает остаток от

else b:=b mod a; // целочисленного деления

nod:=a+b; // получаем НОД

end;

//функция сдвига символа. Ей передается алфавит, символ и величина сдвига

function kod(alphabet:array of char;char:char;displacement:integer):char;

var i:integer;

begin

Result:=char;

for i:=0 to high(alphabet) do //по каждому символу алфавита

begin

if char=alphabet[i] then //если переданный символ является i-символом алфавита

begin

kod:=alphabet[(i+displacement) mod length(alphabet)]; //то результат функции - сдвиг этого символа

break;

end;

end;

end;

//функция получения величины сдвига путем анализа частот встречаемости букв

function getkey(text:string;alphabet:array of char;frequencies:array of real):integer;

var i,j:integer; textfr:array of integer; tt:array of double;

begin

Result:=0;

setlength(textfr,length(frequencies)); // заполняем массив частот

setlength(tt,length(alphabet)); // заполняем массив алфавитом

for i:=1 to length(text) do //считаем количество каждой буквы в тексте

for j:=0 to high(alphabet) do // для каждой буквы

if text[i]=alphabet[j] then textfr[j]:=textfr[j]+1; // количество букв в тексте

for i:=0 to high(alphabet) do //для каждой буквы

begin

tt[i]:=0; // массив наименьших квадратов

for j:=0 to high(alphabet) do //считаем столько сумм, сколько букв в алфавите

begin

tt[i]:=tt[i]+sqr(frequencies[j]-textfr[(i+j+1) mod 32]); //сумма - это сумма квадратов разностей между частотой встречаемости...

end; //...1..32 буквы языка и количеством в тексте (1..32)+номер суммы буквы шифротекста

end;

for i:=0 to high(tt) do

if tt[i]=minvalue(tt) then getkey:=31-i; //величина сдвига=длина алфавита-номер минимальной суммы.

end;

//функция удаления из строки небуквенных символов. строчные буквы возвращаются прописными

function probely(s:string;b:byte):string;

var i,g:integer;

begin

i:=0;

g:=length(s);

s:=ansiuppercase(s); // верхний регистр

repeat

inc(i); // увеличиваем на 1

if not (s[i] in ['А'..'Я']) then // если не соответствует сиволу

begin // русского алфавита, то

delete(s,i,1); // удаляем

dec(i); // на символ назад

dec(g); // т.к. удаляем сиволы, то уменьшается длина текста

end

until i=g; // количество русских символов равно длине текста

probely:=s; // а пока i не равно g повторяем нашу функцию

end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); // шифровать

var

obr:string;

gr:integer;

begin

if memo1.Text='' then // если текст пустой

begin

showmessage('Введите текст для шифровки');

abort;

end;

if edit1.Text='' then // если ключ пустой

begin

showmessage('Введите текст ключа');

abort;

end;

memo1.Text:=StringReplace(Memo1.Text,'ё','е',[rfReplaceAll]);// заменяем ё на е

memo1.Text:=StringReplace(Memo1.Text,'Ё','Е',[rfReplaceAll]);// заменяем Ё на Е

memo2.Text:=Viz_Crypt(memo1.Text,edit1.Text);//выполнить функцию шифрования

obr:=memo2.text;// делим обработанный текст на группы символов

gr:=0;

while gr<length(obr) do

begin

gr:=gr+7;

insert('',obr,gr);

end;

memo2.Text:=LowerCase(obr); // верхний регистр

end;

procedure TForm1.Button2Click(Sender: TObject); // дешифровать

var

obr:string;

gr:integer;

begin

if memo1.Text='' then // если не введен текст

begin

showmessage('Введите текст для расшифровки');

abort;

end;

if edit1.Text='' then // если не введен ключ

begin

showmessage('Введите текст ключа');

abort;

end;

memo1.Text:=StringReplace(Memo1.Text,'ё','е',[rfReplaceAll]);// заменяем ё на е

memo1.Text:=StringReplace(Memo1.Text,'Ё','Е',[rfReplaceAll]);// заменяем Ё на Е

memo2.Text:=Viz_DeCrypt(memo1.Text,edit1.Text); // выполняем функцию дешифрования

obr:=memo2.text;

gr:=0;

while gr<length(obr) do // делим полученный текст на группы

begin

gr:=gr+7;

insert('',obr,gr);

end;

memo2.Text:=LowerCase(obr); // переводим в регистр (верхний если что)

end;

procedure TForm1.Button3Click(Sender: TObject); // очистка

begin

memo1.Lines.Clear; // очищаем

memo2.Lines.Clear; // очищаем

edit1.Text:=''; // очищаем

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

case key of

#8, 'А'..'я': ; // разрешено для ввода

else key:=#0; // запрет ввода

end;

end;

procedure TForm1.FormActivate(Sender: TObject);

var i:integer;

begin

vig[1]:='абвгдежзийклмнопрстуФхцчшщъыьэюя'; // первая строка таблицы

for i:=2 to 32 do //создание таблицы виженера

vig[i]:=copy(vig[1],i,33-i)+copy(vig[1],1,i-1);

//заполнение массива частот встречаемости букв в русском языке

frs[0]:=0.062;frs[1]:=0.014;frs[2]:=0.038;frs[3]:=0.013;

frs[4]:=0.025;frs[5]:=0.072;frs[6]:=0.007;frs[7]:=0.016;

frs[8]:=0.062;frs[9]:=0.010;frs[10]:=0.028;frs[11]:=0.035;

frs[12]:=0.026;frs[13]:=0.052;frs[14]:=0.090;frs[15]:=0.023;

frs[16]:=0.040;frs[17]:=0.045;frs[18]:=0.053;frs[19]:=0.021;

frs[20]:=0.002;frs[21]:=0.009;frs[22]:=0.003;frs[23]:=0.012;

frs[24]:=0.006;frs[25]:=0.003;frs[26]:=0.007;frs[27]:=0.016;

frs[28]:=0.007;frs[29]:=0.003;frs[30]:=0.006;frs[31]:=0.018;

for i:=0 to 31 do //заполнение буквами массивов алфавитов

begin

trb[i]:=chr(192+i);

trs[i]:=chr(224+i);

end;

memo1.SetFocus; // сделать текущим

end;

procedure TForm1.Button5Click(Sender: TObject); // выход

begin

close;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

SaveWindowProc:=Edit1.WindowProc;

Edit1.WindowProc:=TEditWindowProc;

end;

procedure TForm1.TEditWindowProc(var Message: TMessage);

begin

if Message.Msg=wm_paste then Message.Result:=0

else SaveWindowProc(Message);

end;

procedure TForm1.Memo2KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key=VK_DELETE then

Memo2.Lines.Clear;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

showmessage('Автор программы учащийся 2 курса 7-П группы Соловьёв Артём');

end;

procedure TForm1.N8Click(Sender: TObject);

begin

showmessage('Эта программа предназначена для шифрования/дешифрования методом Вижинера, как на учебных занятиях так и для работы с кодировкой Вижинера.');

end;

procedure TForm1.N7Click(Sender: TObject);

begin

close;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

button1.Click;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

Button2.Click;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

Button3.Click;

end;

end. // конец.

Размещено на Allbest.ru


Подобные документы

  • Постановка задачи, описание предметной области, входная и выходная информация. Выбор и основание инструментов разработки. Программно-аппаратные ресурсы. Описание логической структуры, проектирование системы меню. Тестирование, способ установки программы.

    курсовая работа [107,5 K], добавлен 07.09.2015

  • Разработка автоматизированной информационной системы "Учет Касс". Информационная база задачи, входная и выходная информация и система меню. Описание программы для пользователя. Форма документа для ввода в эксплуатацию. Системные требования к программе.

    курсовая работа [927,6 K], добавлен 23.01.2015

  • Нормировка количества пикселей экрана, единичных показателей фокусного расстояния, количества точек матрицы и светосилы объектива. Расчёт комплексного показателя качества. Расшифровка текста шифром Вижинера. Цифровые эквиваленты букв русского алфавита.

    контрольная работа [93,0 K], добавлен 24.11.2013

  • Разработка алгоритмов на персональном компьютере, среда Турбо Паскаль. Работа программы для шифровки и дешифровки текста. Алгоритм шифрования: с помощью команды ORD. Функция Password а преобразовании символа, введенного пользователем ключа в его числовой

    курсовая работа [19,6 K], добавлен 17.10.2008

  • Требования к функциональным характеристикам, надежности и условиям эксплуатации программы. Информационное обеспечение задачи, нормативно-справочные данные, входная и выходная информация. Схема взаимосвязи программных модулей и описание программы.

    курсовая работа [979,2 K], добавлен 20.09.2012

  • Описание входной и выходной информации. Программно-технические средства, необходимые для разработки программы "Автоматизированная информационная справочная система аптеки". Возможность формирования и корректировки файлов, тестирование программы.

    курсовая работа [761,7 K], добавлен 18.12.2013

  • Обоснование выбора средства программирования: входная и выходная информация, требования к аппаратному и программному обеспечению. Функциональное назначение программы, её глобальные переменные и константы, внутренняя структура и руководство пользователя.

    курсовая работа [1,4 M], добавлен 07.09.2012

  • Автоматизация учета материалов на складе с применением баз данных (MS Access). Разработка логической структуры реляционной базы данных (входная информация - формы, выходные документы - отчеты). Применение программы, расчет экономической эффективности.

    курсовая работа [4,3 M], добавлен 27.02.2011

  • Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы.

    курсовая работа [563,7 K], добавлен 15.07.2012

  • Назначение и функции программы, моделирующей работу проката видео- и аудио-дисков. Входная информация, основные алгоритмы. Критерии контроля вводимых данных. Класс Unit, Disk, Oborud, Prokat, диаграмма. Описание работы программы, её исходный код.

    курсовая работа [337,4 K], добавлен 23.01.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.