Министерство науки и образования Украины
Сумский государственный университет
Кафедра информатики
Лабораторная работа №2
по теме:
"Шифры сложной замены. Шифр Вижинера"
Выполнила студентка гр. Ин-51
Павленко Анна
Проверил Дунь А.В.
Сумы 2009
Постановка задачи
1. Построить таблицу Вижинера для заданного алфавита A1 (таблица 1.1) согласно вашего варианта.
2. Производить зашифрование данных длиной не менеее 30 символов с ключом, длиной не менее 10 символов и заданным алфавитом A1 с помощью шифра Вижинера.
3. Производить расшифрование данных зашифрованных с помощью шифра Вижинера.
№ в-та |
А1 |
14 |
Цифры, спецсимвол (=) и строчные буквы латинского алфавита |
Исходные данные
Цифры, спецсимвол (=) и строчные буквы латинского алфавита:
a b c d e f g h i j k l m n o p q r s t u v w x y z = 0 1 2 3 4 5 6 7 8 9
Исходный текст:
if=you=really=want=to=hear=about=it=the=first=thing
Ключ:
in51
Текстпрограммы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Button2: TButton;
Button3: TButton;
Edit3: TEdit;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
alf:array[0..43] of char=('0','1','2','3','4','5','6','7','8','9','=','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я');
var
Form1: TForm1;
tabl:array[0..43,0..43] of char; //таблица
mask:array [0..100] of char ;// копии ключа
klu4:string;// ключ
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
t:integer; //переменная, на которую мы сдвигаеем алфавит чтобы построить таблицу
begin
for i:=0 to 45 do
form2.stringGrid1.Cells[0,i+1]:=inttostr(i); //цифры
for j:=0 to 45 do
form2.stringGrid1.Cells[j+1,0]:=alf[j]; //алфафит
//создание таблицы Вижинера
for i:=0 to 43 do
begin
t:=0;
for j:=0 to 43 do
begin
if(j+i<44) then
tabl[i][j]:=alf[j+i]
else
begin
tabl[i][j]:=alf[t];
inc(t);
end;
end;
end;
//------------------------------
for i:=0 to 43 do
for j:=0 to 43 do
form2.stringGrid1.Cells[j+1,i+1] := tabl[i][j];
form2.showmodal;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='if=you=really=want=to=hear=about=it=the=first=thing';
Edit2.Text:='in51' ;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
ot:string;//открытый текст
k:integer;
sht:string;//зашифрованный текст
i,j,n,m:integer;
begin
ot:=Edit1.Text;
klu4:=Edit2.Text;
{
проверка: если ключ меньше длинны открытого текста, то копируем его на всю
длиину текста
}
k:=1;
for i:=0 to Edit1.GetTextLen do
begin
if(k<=Edit2.GetTextLen) then
begin
mask[i]:=klu4[k];
inc(k);
end
else
begin
k:=1;
mask[i]:=klu4[k];
inc(k);
end;
end;
//---------------------------
//шифруем
for i:=1 to Edit1.GetTextLen do
begin
for j:=0 to 43 do
begin
if(ot[i]=tabl[0][j]) then
m:=j;
if(mask[i-1]=tabl[j][0]) then
n:=j;
end;
sht:=sht+tabl[m][n];
end;
Edit3.Text:=sht;
//-----------------------
end;
procedure TForm1.Button3Click(Sender: TObject);
var
sht:string;
rt:string;//расшифрованный текст
i,j,n,m,k:integer;
begin
sht:=Edit3.Text;
//расшифровка
for i:=0 to Edit3.GetTextLen-1 do
begin
for j:=0 to 43 do
if(mask[i]=tabl[0][j]) then
n:=j;
for j:=0 to 43 do
if(sht[i+1]=tabl[n][j]) then
m:=j;
rt:=rt+tabl[0][m];
end;
Edit4.Text:=rt;
//---------------
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
end.
Результат работы программы
Вывод
Выполнив эту лабораторную работу я научилась шифровать информацию с помощью шифра Вижинера.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.