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

Система шифрования Вижинера

.doc
Скачиваний:
26
Добавлен:
16.04.2013
Размер:
45.06 Кб
Скачать

Система шифрования Вижинера

Шифрование происходит следующим образом:

  1. Строится следующим образом таблица, состоящая из всего набора символов открытого текста, например (таблица 1):

procedure Tmn.FormCreate(Sender: TObject);

АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

БВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯА

ВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБ

ГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВ

ДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГ

ЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГД

ЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕ

ЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁ

ЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖ

ИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗ

ЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИ

КЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙ

ЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙК МНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛ

НОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМ

ОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМН

ПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНО

РСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОП

СТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПР

ТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРС

УФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТ

ФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУ

ХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФ

ЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХ

ЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦ

ШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧ

ЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШ

ЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩ

ЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪ

ЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫ

ЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬ

ЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭ

ЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮ

Таблица 1

  1. Выбирается ключ, не содержащий повторяющихся символов. Например, «вилка».

procedure Tmn.Button1Click(Sender: TObject);

  1. Берется искомый текст, например «завтра встретимся у моста», и под текст подставляется ключ следующим образом:

завтра встретимся у моста (1)

вилкав илкавилкав и лкави (2)

После этого символы шифротекста берутся на пересечении строки, начинающейся на символ из (2) и столбца, начинающегося на соответствующий символ из (1).

После этого получим шифротекст: «йинэрв кээруыфчсб ь шщсфи».

Таким образом, повторяющиеся символы открытого текста не переходят в повторяющиеся символы шифротекста.

Дешифрование происходит следующим образом:

procedure Tmn.Button2Click(Sender: TObject);

  1. под шифротекст подставляется ключ:

йинэрв кээруыфчсб ь шщсфи (3)

вилкав илкавилкав и лкави (4)

2. В таблице 1 ищется строка, начинающаяся на символ из (4), в строке ищется символ из (3), соответствующий символу из (4). Движемся вверх по таблице на первую строку, и находим там соответствующий символ.

procedure Tmn.FormCreate(Sender: TObject);

var i,j:integer;

al,r:string;

tmp:char;

begin

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

for i:=1 to 34 do

alph[1,i]:=al[i];

for i:=1 to 33 do

begin

r:='';

tmp:=alph[i,1];

for j:=1 to 33 do

begin

alph[i+1,j]:=alph[i,j+1];

r:=r+alph[i,j+1];

end;

alph[i+1,34]:=tmp;

end;

end;

procedure Tmn.Button1Click(Sender: TObject);

var

enst,lozst:string;

lozst1:string;

rezst:string;

i,j,k:integer;

fn,sn:integer;

begin

enst:=ansilowercase(str.Text);

lozst:=ansilowercase(loz.Text);

j:=1;

lozst1:='';

if length(enst)>length(lozst) then

begin

for i:=1 to length(enst) do

begin

if j>length(lozst) then j:=1;

lozst1:=lozst1+lozst[j];

j:=j+1;

end;

end;

rezst:='';

for k:=1 to length(enst) do

begin

for i:=1 to 34 do

if alph[i,1]=enst[k] then fn:=i;

for j:=1 to 34 do

if alph[1,j]=lozst1[k] then sn:=j;

rezst:=rezst+alph[fn,sn];

end;

edit1.Text:=rezst;

end;

procedure Tmn.Button2Click(Sender: TObject);

var

enst,lozst:string;

lozst1:string;

rezst:string;

i,j,k:integer;

fn,sn:integer;

begin

enst:=ansilowercase(edit3.Text);

lozst:=ansilowercase(edit2.Text);

j:=1;

lozst1:='';

if length(enst)>length(lozst) then

begin

for i:=1 to length(enst) do

begin

if j>length(lozst) then j:=1;

lozst1:=lozst1+lozst[j];

j:=j+1;

end;

end;

rezst:='';

for k:=1 to length(lozst1) do

begin

fn:=0;

sn:=0;

for i:=1 to 34 do

if alph[i,1]=lozst1[k] then fn:=i;

for j:=1 to 34 do

if alph[fn,j]=enst[k] then sn:=j;

rezst:=rezst+alph[1,sn];

end;

edit4.Text:=rezst;

end;

Соседние файлы в предмете Предмет и задачи программно-аппаратной защиты информации