Лабораторная работа №3
Блочное шифрование
Вариант №1
Выполнила:
студентка группы 08-АС
Смирнова А.А.
Цель работы: изучение методов блочного шифрования.
Номер варианта |
Ключ |
1 |
3r8tl34ri |
С помощью программы шифрования AVTOKEY.exe зашифрован файл D3.doc с ключом 3r8tl34ri, полученный файл с именем D3_s.doc расшифрован по этому же ключу, в итоге полученный файл D3_DSH.doc совпал с исходным.
Программа блочного шифрования:
program avto;
uses WinCrt,Windos;
var
i,j,k,m,nb:integer;
f1,f2:file;
numf1,numf2:string;
nr,nw:word; {county}
buf1,buf2,buf3:array[1..100]of shortint;
bf:char;
const
kluch:array[0..9] of integer=(5,8,12,54,3,9,77,44,32,88);
begin
{$I-}
writeln('программа шифрования по автоключу');
writeln('введите имя шифруемого файла');
readln(numf1);
assign(f1,numf1);
reset(f1,1);
writeln('файл открыт');
writeln('введите имя зашифрованного файла');
readln(numf2);
assign(f2,numf2);
rewrite(f2,1);
writeln('введите ключ – строку из десяти символов');
for i:=0 to 9 do kluch[i]:=ord(readkey);
writeln;writeln('ваш ключ ');
for i:=0 to 9 do write(chr(kluch[i]),' ');
writeln;
nb:=1;
repeat
blockread(f1,buf1,sizeof(buf1),nr);
{writeln('количество блоков в исходном файле',nr);}
for i:=1 to nr do
begin
if nb=1 then begin
buf2[i]:=buf1[i] xor kluch[i mod 10];
end;
if nb>1 then begin
buf2[i]:=buf1[i] xor buf3[i];
end;
buf3[i]:=buf1[i];
end;
blockwrite(f2,buf2,nr,nw);
{writeln('количество блоков в зашифрованном файле',nw);}
nb:=nb+1;
until (nr=0) or (nw<>nr);
close(f1);
close(f2);
writeln(' файл зашифрован ');
{$I+}
end.