ЛАБОРАТОРНАЯ РАБОТА ПО ДИСЦИПЛИНЕ
"ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ"
Лабораторная работа 9. Шифрование методом
гаммирования.
Шифрование
методом гаммирования заключается в следующем. Имеется какой-нибудь текст,
который мы хотим зашифровать. Для зашифрования используется ключевое слов,
состоящее из букв, цифр и др символов. Шифрование осуществляется
таким образом. Берем код первого символа ключевого слова и складываем со
следующим. Полученное число и будет ключом. Затем берется код первой буквы
открытого текста и складывается с ключом, а затем полученное число переводится
в символ посредством функции СНR. Таким образом делают для всех букв. После
зашифрования в конец файла добавляется ключ, т.е символ,
полученный посредством перевода числа в символ. Например, дано слов КНИГА и
ключевое слово ТОМ. Зашифруем слово КНИГА.
Берем код
буквы Т и складываем его с кодом буквы О а затем
прибавляем код буквы М. полученное число и будет ключом.
Теперь
берем код буквы К и складываем с ключом. Полученное число переводим в символ.
Т.е. мы зашифровали букву К. Так поступают со всеми буквами. После зашифрования
в конец файла помещаем ключ, переведенный в символ.
Создадим программу,
реализующую изложенный алгоритм.
Создайте форму приведенную на рисунке.

кнопки
открыть пропишите сами, вы это уже умеете.
Эти
переменные опишите глобально
var
kl_sl:string;
dl_kl_sl:integer;
dl_txt:integer;
txt:string;
shifr:string;
s:integer;
f:textfile;
Шифровать
мы будем посредством
функции.
function cript(txt1,klsl:string;dltxt,dlklsl:integer;s1:integer):string;
var i,kl,res:integer;shif:string;
begin
kl:=0;res:=0;shif:='';
for i:=1 to dlklsl
do kl:=kl+ord(klsl[i]);
for i:=1 to dltxt do
begin
res:=res+ord(txt1[i])+s1*kl;
shif:=shif+chr(res);
res:=0;
end;
cript:=shif;
end;
Код кнопки шифровать.
procedure TForm1.SHIFRClick(Sender: TObject);
var i:integer;
kl,res:integer;
res1,KL1:string;
begin
s:=1;KL:=0;
txt:=memo1.Text;
kl_sl:=edit1.Text;
dl_txt:=length(txt);
dl_kl_sl:=length(kl_sl);
res1:=cript(txt,kl_sl,dl_txt,dl_kl_sl,s);
FOR I:=1 TO DL_KL_SL DO KL:=KL+ORD(KL_SL[I]);
KL1:=CHR(KL);
assignfile(f,opendialog1.FileName);
rewrite(f);
write(f,res1);
closefile(f);
assignfile(f,opendialog1.FileName);
append(f);
write(f,KL1);
closefile(f);
end;
код кнопки расшифровать
procedure TForm1.DESHIFRClick(Sender: TObject);
var res2:string; dop,dop1:string;
dl,i,KL1:integer;
begin
dop1:='';
s:=-1;
KL1:=0;
assignfile(f,opendialog2.FileName);
reset(f);
read(f,dop);
closefile(f);
kl_sl:=edit2.Text;
dl:=length(dop);
dl_kl_sl:=length(kl_sl);
FOR I:=1 TO DL_KL_SL DO KL1:=KL1+ORD(KL_SL[I]);
dop1:=dop[dl];
if dop1=CHR(KL1) then begin
txt:=memo2.text;
dl_txt:=length(txt);
res2:=cript(txt,kl_sl,dl_txt-1,dl_kl_sl,s);
assignfile(f,opendialog2.FileName);
rewrite(f);
write(f,res2);
closefile(f); end
else showmessage('Error password!!!');
end;
Создайте
текстовый файл. Напишите в нем свое имя. Теперь запустите программу и по
нажатию кнопки открыть загрузите ваш файл. Введите ключевое слово и нажмите
кнопку шифровать.
Закройте
программу. Откройте ваш файл. Вы видите, что текст зашифрован. Запустите
программу снова. Нажмите вторую кнопку открыть. Введите неправильное ключевое
слово. Вы видите, что вышло сообщение,
говорящее о том, что неправильный пароль. Введите правильный пароль. Закройте
программу. Откройте ваш файл и проверьте результат.