Лабораторная работа №1
Шифрование с помощью перестановок
Вариант №1
Выполнила:
студентка группы 08-АС
Смирнова А.А.
Цель работы: изучение метода шифрования информации с помощью системы перестановок.
Программа шифрования с помощью перестановки:
program TRANS; {программа шифрования с помощью перестановки}
uses WinCrt,Windos;
var
i,j,k,m:integer;
f1,f2:file;
numf1,numf2:string;
nr,nw:word;
buf1,buf2:array[1..2048]of char;
const
kluch:array[1..9] of integer=(1,5,4,2,7,6,9,3,8);
{ключ - набор неповторяющихся чисел от 1 до 9}
begin
{$I-}
writeln(' программа шифрования чисел с помощью перестановок ');
writeln('введите имя шифруемого файла ');
readln(numf1);
assign(f1,numf1);
reset(f1,1);
writeln('файл открыт');
writeln('введите имя зашифрованного файла');
readln(numf2);
assign(f2,numf2);
rewrite(f2,1);
writeln('введите ключ – строку из десяти неповторяющихся цифр от 1 до 9');
for i:=1 to 9 do kluch[i]:=(ord(readkey)-48)mod 10;
writeln;writeln('ваш ключ ');
for i:=1 to 9 do write(kluch[i],' ');
writeln;
repeat
blockread(f1,buf1,sizeof(buf1),nr);
for i:=1 to nr div 9 do
begin
for j:=1 to 9 do
begin
k:=9*(i-1)+j;
m:=9*(i-1)+kluch[j];
buf2[k]:=buf1[m];
end;
end;
blockwrite(f2,buf2,nr,nw);
until (nr=0) or (nw<>nr);
close(f1);
close(f2);
writeln('файл зашифрован ') ;
{$I+}
end.
Программа дешифрования:
program STRANS; {программа дешифрования}
uses Crt,Windos;
var
i,j,k,m:integer;
f1,f2:file;
numf1,numf2:string;
nr,nw:word;
buf1,buf2:array[1..2048]of char;
const
kluch:array[1..9] of integer=(1,5,4,2,7,6,9,3,8);
{ключ - набор неповторяющихся чисел от 1 до 9}
begin
{$I-}
writeln(' программа дешифрования чисел с помощью перестановок ');
writeln('введите имя дешифруемого файла ');
readln(numf1);
assign(f1,numf1);
reset(f1,1);
writeln('файл открыт');
writeln('введите имя расшифрованного файла');
readln(numf2);
assign(f2,numf2);
rewrite(f2,1);
writeln('введите ключ – строку из десяти неповторяющихся цифр от 1 до 9');
for i:=1 to 9 do kluch[i]:=(ord(readkey)-48)mod 10;
writeln;writeln('ваш ключ ');
for i:=1 to 9 do write(kluch[i],' ');
writeln;
repeat
blockread(f1,buf1,sizeof(buf1),nr);
for i:=1 to nr div 9 do
begin
for j:=1 to 9 do
begin
k:=9*(i-1)+j;
m:=9*(i-1)+kluch[j];
buf2[m]:=buf1[k];
end;
end;
blockwrite(f2,buf2,nr,nw);
until (nr=0) or (nw<>nr);
close(f1);
close(f2);
writeln('файл дешифрован ') ;
{$I+}
end.