Создание компонента для шифрования-дешифрования текста

Создание приложения для шифрования–дешифрования текста тремя алгоритмами (алгоритм "Цезаря","Модифицированного Цезаря", "Скитала"). Исходный текст компонента. Инструкция пользователя, возможность просмотра примерного алгоритма. Исходный текст программы.

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

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

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

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

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

КУРСОВАЯ РАБОТА

по дисциплине «Технология программирования»

«Создание компонента для шифрования-дешифрования текста»

Содержание

Введение

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

2. Алгоритм создания компонента

3. Исходный текст компонента

4. Инструкция пользователя

5. Исходный текст программы

Заключение

Список литературы

Приложение

Введение

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

При создании компонента шифрования текста я использовал три метода шифрования: алгоритм «Цезаря», алгоритм «Модифицированного Цезаря» и алгоритм «Скитала».

1.Алгоритм шифрования «Цезарь»

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

Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Естественным развитием шифра Цезаря стал шифр Виженера. С точки зрения современного криптоанализа, шифр Цезаря не имеет приемлемой стойкости.

2.Шифр «Модифицированного Цезаря»

Аббат Тритемеус - автор первой печатной книги о тайнописи (1518 г.) - предложил несколько шифров и среди них шифр, который можно считать усовершенствованием шифра Цезаря. Этот шифр устроен так. Все буквы алфавита нумеруются по порядку (от 1 до 31 в русском варианте). Затем выбирают какое-нибудь слово, называемое "ключом", и подписывают под сообщением с повторением.

Чтобы получить шифрованный текст, складывают номер очеред-ной буквы с номером соответствующей буквы ключа. Если полученная сумма больше 31, то из нее вычитают 31. В результате получают последовательность чисел от 1 до 31. Вновь заменяя числа этой последовательности соответствующими буквами, получают шифрованный текст. Разбиваем этот текст на группы одной длины, получают шифрованное сообщение.

3. Шифр «Скитала»

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

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

Таким образом, длина блока n определялась длиной и диаметром палочки, а само шифрование заключалось в перестановке символов исходного текста в соответствии с длиной окружности палочки. Например, используя палочку, по длине окружности которой помещается 4 символа, а длина палочки позволяет записать 6 символов, исходный текст: «это шифр древней спарты» превратится в шифрограмму: «эфвптрнао ер дйтшр ыиес».

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

Создать компонент для шифрования - дешифрования текста тремя алгоритмами (алгоритм «Цезаря», алгоритм «Модифицированного Цезаря», алгоритм «Скитала») и применить его в программе.

2. Алгоритм создания компонента

Для создания компонента нужно сначала определить визуальный он будет или нет.

Теперь нужно выбрать предка. Как правило, используются в виде предков TComponent, TControl, TWinControl, TGraphicControl, TCustomXXXXXX, а также все компоненты палитры компонентов. Для своего компонента я взял предка TOpenDialog.

В Borland Delphi в меню Component мы выбираем пункт New Component.

Далее выводится небольшая таблица для нового компонента:

Ancestor type - выбираем предка для компонента;

Class Name - имя класса для компонента;

Palette Page - выбираем вкладку на которой будет наш компонент. В данном случае мы создали новую вкладку с названием My Component.

Поля Unit file name и Search path определяются автоматически и в них ничего вводить не нужно.

При нажатии кнопки ОК появляется шаблон нашего будущего компонента.

Переопределяем конструктор у этого компонента:

В директиве public вставляем строку

constructor Create(AOwner: TComponent); override;

нажатие на этой строке Ctrl + Shift + C создает шаблон для этого метода, внутри которого мы вставляем такие строки:

inherited Create(AOwner); {Вызываем унаследованный конструктор}
Options := Options + [ofFileMustExist, ofPathMustExist]; {Выполняем необходимые нам действия}

Теперь нужно сохранить и установить созданный компонент.

В меню Component выбираем пункт Install Component…

В поле Unit file name указываем имя нашего сохранённого модуля и нажимаем ОК.

Тут появиться сообщение «Такой то пакет будет изменён. Продолжить?», на это сообщение мы нажимаем кнопку ОК.

Теперь на в новой вкладе My component появился наш собственный компонент ShifText.

3. Исходный текст компонента

unit ShifText;

interface

uses

SysUtils, Classes, Dialogs;

type

TShifText = class(TOpenDialog)

private

{ Private declarations }

protected

{ Protected declarations }

public

function AlgCez(S,Cl:string):string;

function DeAlgCez(S,Cl:string):string;

function AlgVijen(S,Cl:string):string;

function DeAlgVijen(S,Cl:string):string;

function AlgSkit(S,Cl:string):string;

function DeAlgSkit(S,Cl:string):string;

constructor Create(AOwner: TComponent); override;

{ Public declarations }

published

{ Published declarations }

end;

procedure Register;

implementation

procedure Register;

begin

RegisterComponents('My Component', [TShifText]);

end;

{ TShifText }

constructor TShifText.Create(AOwner: TComponent);

begin

inherited Create(AOwner); {Вызываем унаследованный конструктор}

Options := Options + [ofFileMustExist, ofPathMustExist]; {Выполняем необходимые нам действия}

end;

function TShifText.AlgCez(S,Cl:string):string;

var i,k,k1,a,Cluch:Integer;

begin

Cluch:=StrToInt(Cl);

for i:=1 to Length(S) do

begin

k:=Ord(S[i]);

k1:=k+Cluch;

if (k1>=255) then

begin

a:=k1-255;

k1:=a+1;

end;

S[i]:=Chr(k1);

end;

Result:=S;

end;

function TShifText.DeAlgCez(S,Cl:string):string;

var i,k,k1,a,Cluch:integer;

begin

Cluch:=StrToInt(Cl);

for i:=1 to Length(S) do

begin

k:=Ord(S[i]);

k1:=k-Cluch;

if (k1<=1) then

begin

a:=1-k1;

k1:=255-a;

end;

S[i]:=Chr(k1);

end;

Result:=S;

end;

function TShifText.AlgVijen(S,Cl:string):string;

var i,k,k1,a,Cluch,Cl1:Integer;

begin

Cluch:=StrToInt(Cl);

Cl1:=1;

for i:=1 to Length(S) do

begin

k:=Ord(S[i]);

if Cl1<Cluch then

begin

k1:=k+Cl1;

if k1>=255 then

begin

a:=k1-255;

k1:=a+1;

end;

end

else if Cl1=Cluch then

begin

k1:=k+Cl1;

if k1>=255 then

begin

a:=k1-255;

k1:=a+1;

end;

end

else

begin

Cl1:=1;

begin

k1:=k+Cl1;

if k1>=255 then

begin

a:=k1-255;

k1:=a+1;

end;

end;

end;

S[i]:=Chr(k1);

Cl1:=Cl1+1;

end;

Result:=S;

end;

function TShifText.DeAlgVijen(S,Cl:string):string;

var i,k,k1,a,Cluch,Cl1:integer;

begin

Cluch:=StrToInt(Cl);

Cl1:=1;

for i:=1 to Length(S) do

begin

k:=Ord(S[i]);

k1:=k-1;

if Cl1<Cluch then

begin

k1:=k-Cl1;

if k1<=1 then

begin

a:=1-k1;

k1:=255-a;

end;

end

else if Cl1=Cluch then

begin

k1:=k-Cl1;

if k1<=1 then

begin

a:=1-k1;

k1:=255-a;

end;

end

else

begin

Cl1:=1;

k1:=k-Cl1;

if k1<=1 then

begin

a:=1-k1;

k1:=255-a;

end;

end;

S[i]:=Chr(k1);

Cl1:=Cl1+1;

end;

Result:=S;

end;

function TShifText.AlgSkit(S,Cl:string):string;

var S1,n:string;i,j,a,Cl2,Cl1,d:integer;mas:array of array of string;

begin

Cl2:=StrToInt(Cl);

if (Length(S) mod Cl2=0) then Cl1:=(Length(S)div Cl2)

else

Cl1:=(Length(S)div Cl2)+1;

a:=1;

Setlength(mas,Cl2,Cl1+1);

for j:=0 to Cl1 do

for i:=0 to Cl2-1 do

if a<=Length(S) then

begin

if (Ord(S[a])=13) then S[a]:=Char(149);

if (Ord(S[a])=10) then inc(a);

mas[i,j]:=S[a];

inc (a);

end

else

begin

mas[i,j]:=' ';

inc (a);

end;

S1:='';

n:='';

for i:=0 to Cl2-1 do

for j:=0 to Cl1-1 do

begin

n:=mas[i,j];

S1:=S1+n;

inc (a);

end;

Result:=S1;

end;

function TShifText.DeAlgSkit(S,Cl:string):string;

var S1,n:string;i,j,a,Cl2,Cl1,k:integer;mas:array of array of string;

begin

k:=0;

Cl2:=StrToInt(Cl);

if (Length(S) mod Cl2=0) then Cl1:=(Length(S)div Cl2)

else

Cl1:=(Length(S)div Cl2)+1;

a:=1;

Setlength(mas,Cl1+1,Cl2);

for j:=0 to Cl2-1 do

for i:=0 to Cl1-1 do

if a<=Length(S) then

begin

if (Ord(S[a])=149) then S[a]:=Char(13);

if (Ord(S[a])=10) then inc(a);

mas[i,j]:=S[a];

inc (a);

end

else

begin

mas[i,j]:=' ';

inc (a);

end;

n:='';

S1:='';

for i:=0 to Cl1-1 do

for j:=0 to Cl2-1 do

begin

n:=mas[i,j];

begin

S1:=S1+n;

inc (k);

end;

end;

Result:=S1;

end;

end.

4. Инструкция пользователя

Данная программа «Шифратор-дешифратор» (внешний вид программы до начала работы, Приложение 1, Рис. 1) обладает следующими возможностями:

Для работы с программой «Шифратор-дешифратор» текст для последующего шифрования можно вводить вручную, а можно открыть файл с текстом (Файл ->Открыть, Приложение 1, Рис. 2).

Для шифрования текста выбранным алгоритмом нажимаем соответствующую кнопку на форме (Приложение 1, Рис. 3), если программа обнаружит, что текст не введен или файл не открыть выйдет предупреждение (Приложение 1, Рис. 4).

Для дешифрования текста выбранным алгоритмом нажимаем соответствующую кнопку на форме (Приложение 1, Рис. 5).

Для просмотра инструкции пользователя программы, в меню «Файл» выбираем пункт «Справка» (Дополнительно ->Справка, Приложение 1, Рис. 6).

Для просмотра дополнительной информации по программе (алгоритмы шифрования используемые в данной программе, дата разработки, данные о разработчике), в меню «Дополнительно» выбираем пункт «О программе…» (Дополнительно ->О программе…, Приложение 1, Рис. 7).

В программе существует возможность просмотра примерного алгоритма шифрования-дешифрования текста, для этого нажимаем на форме на название алгоритма (Приложение 1, Рис. 8).

Для очистки всех окон программы есть кнопка «Очистить».

Для выхода из программы кнопка «Выход».

5. Исходный текст программы

компонент шифрование алгоритм

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Menus, ShifText, ExtCtrls, jpeg, Spin, XPMan;

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var s:string; //шифрования текст алгоритмом "Цезаря";

begin

if (Memo1.Text<>'')and(SpinEdit1.Text<>'') then //если поле не пустое то

begin

Memo2.Text:=ShifText1.AlgCez(Memo1.Text,SpinEdit1.Text); //применаем алгоритм шифрации к тексту;

end else //иначе выводим сообщение об ошибке;

begin

s:='Сначало введите текст или откройте текстовый файл!!!'#13#10;

MessageBox(handle,PChar(S),'Ошибка!',MB_OKor MB_ICONWARNING);

end;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

if ShifText1.Execute then

begin

Memo1.Lines.LoadFromFile(ShifText1.FileName);

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

var s:string; //дешифрование текста алгоритмом "Цезаря";

begin

if (Memo2.Text<>'')and(SpinEdit1.Text<>'') then

begin

Memo5.Text:=ShifText1.DeAlgCez(Memo2.Text,SpinEdit1.Text);

end else //иначе выводим сообщение об ошибке;

begin

s:='Сначало введите текст или откройте текстовый файл!!!'#13#10;

MessageBox(handle,PChar(S),'Ошибка!',MB_OK or MB_ICONWARNING);

end;

end;

procedure TForm1.Button4Click(Sender: TObject);

var s:string; //шифрования текст алгоритмом "Модифицированного Цезаря";

begin

if (Memo1.Text<>'')and(SpinEdit1.Text<>'') then

begin

Memo3.Text:=ShifText1.AlgVijen(Memo1.Text,SpinEdit1.Text); //применаем алгоритм шифрации к тексту;

end else //иначе выводим сообщение об ошибке;

begin

s:='Сначало введите текст или откройте текстовый файл!!!'#13#10;

MessageBox(handle,PChar(S),'Ошибка!',MB_OK or MB_ICONWARNING);

end;

end;

procedure TForm1.Button5Click(Sender: TObject);

var s:string; //дешифрование текста алгоритмом "Модифицированного Цезаря";

begin

if (Memo3.Text<>'')and(SpinEdit1.Text<>'') then

begin

Memo6.Text:=ShifText1.DeAlgVijen(Memo3.Text,SpinEdit1.Text); //применаем алгоритм дешифрации к тексту;

end else //иначе выводим сообщение об ошибке;

begin

s:='Сначало введите текст или откройте текстовый файл!!!'#13#10;

MessageBox(handle,PChar(S),'Ошибка!',MB_OK or MB_ICONWARNING);

end;

end;

procedure TForm1.Button6Click(Sender: TObject);

var s:string; //шифрование текста алгоритмом "Скитала";

begin

if (Memo1.Text<>'')and(SpinEdit1.Text<>'') then

begin

Memo4.Text:=ShifText1.AlgSkit(Memo1.Text,SpinEdit1.Text); //применаем алгоритм дешифрации к тексту;

end else //иначе выводим сообщение об ошибке;

begin

s:='Сначало введите текст или откройте текстовый файл!!!'#13#10;

MessageBox(handle,PChar(S),'Ошибка!',MB_OK or MB_ICONWARNING);

end;

end;

procedure TForm1.Button7Click(Sender: TObject);

var s:string; //дешифрование текста алгоритмом "Скитала";

begin

if (Memo4.Text<>'')and(SpinEdit1.Text<>'') then

begin

Memo7.Text:=ShifText1.DeAlgSkit(Memo4.Text,SpinEdit1.Text); //применаем алгоритм дешифрации к тексту;

end else //иначе выводим сообщение об ошибке;

begin

s:='Сначало введите текст или откройте текстовый файл!!!'#13#10;

MessageBox(handle,PChar(S),'Ошибка!',MB_OK or MB_ICONWARNING);

end;

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

Memo1.Clear; Memo2.Clear; Memo3.Clear; Memo4.Clear; Memo5.Clear; Memo6.Clear; Memo7.Clear;

SpinEdit1.Value:=1; //очистка всех окон и установление в поле ключ значения `1'

end;

end.

Заключение

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

При создании компонента шифрования текста я использовал три метода шифрования: алгоритм «Цезаря», алгоритм «Модифицированного Цезаря» и алгоритм «Скитала».

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

Таким образом, длина блока n определялась длиной и диаметром палочки, а само шифрование заключалось в перестановке символов исходного текста в соответствии с длиной окружности палочки. Например, используя палочку, по длине окружности которой помещается 4 символа, а длина палочки позволяет записать 6 символов, исходный текст: «это шифр древней спарты» превратится в шифрограмму: «эфвптрнао ер дйтшр ыиес».

Список литературы

Христосенко М. Пособие по написанию своих компонентов на Дельфи для начинающих, 2010.

Акулов Н. Пособие по написанию компонентов, 2006.

Роцкий Т. Статья «Шифрование в DELPHI», 2009.

Приложение

Рис. 1. Внешний вид программы

Рис. 2. Открыть файл

Рис. 3. Демонстрация зашифрованного текста

Рис. 4. Предупреждение

Рис. 5. Демонстрация дешифрованного текста

Рис. 6. Раздел «Справка»

Рис. 7. Раздел «О программе…»

Рис. 8. «Пояснение» к алгоритмам шифрования

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


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

  • История появления и развития шифрования текста. Проблема шифрования и дешифрования текстовых сообщений в современности. Создание программы для зашифровки и расшифровки вводимого текста пятью методами: Атбаш, Цезаря, Полибия, Гронсфельда и Винжера.

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

  • Основные требования к разрабатываемым программам и исходным текстовым файлам. Характеристика шифров замены. Укрупненные структурные схемы и коды программ шифрования и дешифрования, скриншоты их выполнения. Пример зашифрованного текста и его дешифрования.

    курсовая работа [556,8 K], добавлен 14.01.2013

  • Схема работы и требования к программам шифрования и дешифрования. Алгоритмы и тексты программы шифрования и программы дешифрования, выполненные на языке программирования C/C++. Содержание файла с исходным текстом, с шифротекстом, с дешифрованным текстом.

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

  • Понятие информационной безопасности. История развития криптографии. Функции информационных моделей. Переменные, используемые при разработке прикладной программы для шифрования и дешифрования сообщений с помощью шифра Цезаря. Блок-схема общего алгоритма.

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

  • Краткая характеристика библиотек: stdio.h, conio.h, string.h, stdafx.h. Шифр Плейфера как подстановка символов из таблицы, основные варианты. Структура программы playfer.exe. Создание таблицы перекодировки. Ввод, шифрование и дешифрование текста.

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

  • Возможности создания и обработки графики. Алгоритм шифрования текста в графику. Изменения цветовых каналов. Инициализация объектов html-сущностей. Формирование декодированной строки. Инструменты для обработки массивов, текстовых данных и графики.

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

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

    курсовая работа [2,0 M], добавлен 20.01.2010

  • Реализация криптографического алгоритма шифрования и дешифрования с использованием шифра Виженера. Понятие и суть полиалфавитного шифра. Метод полиалфавитного шифрования буквенного текста с использованием ключевого слова. Взлом полиалфавитных шифров.

    курсовая работа [863,0 K], добавлен 21.04.2012

  • Разработка программы, реализующей процедуры шифрования и расшифрования текста по стандарту DES (Data Encryption Standard). Структура алгоритма шифрования, схема выработки ключевых элементов. Использование криптографического программного средства.

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

  • Клавиатурный тренажер как эффективная программа для получения и усовершенствования навыка набора текста. Инструкция пользователя для работы с ней. Описание алгоритма решения задачи. Цель использования функции "Уровня скорости", компонента Таймер.

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

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