Лабораторная работа №5
Системы с открытым ключом
Вариант №2
Выполнила:
студентка группы 08-АС
Смирнова А.А.
Цель работы: исследование метода шифрования информации с использованием открытых ключей.
Расчет закрытого и открытого ключа из таблицы:
Номер варианта |
P |
Q |
N |
K |
E |
d |
2 |
31 |
17 |
527 |
480 |
37 |
25 |
p = 31
q = 17
N = pq = 527
K = (p-1)(q-1) = 480
С помощью программы S_RSA.pas зашифрован файл D.txt, полученный файл с именем D_s.txt расшифрован, в итоге полученный файл D_DSH.txt совпал с исходным.
Программы датчика случайных чисел и гаммирования:
program Datchic;
uses WinCrt,Windos;
var
G0,A,G,C,i:longint;
Y:char;
const
M:longint=65536;
label 1;
begin
i:=0;
writeln(' программа - датчик случайных чисел ');
writeln(' G(i+1)=(A*G(i)+C) mod 65535');
1:
writeln('введите A,C и G(0) (числа до 65535)');
readln(A,C,G0);
i:=0; G:=G0;
repeat
if i=1000 then G0:=G;
G:=(A*G+C) mod M;
i:=i+1;
until (G=G0)or(i=65535);
writeln;
writeln('длина псевдослучайной последовательности чисел ',i);
writeln('продолжить ? Y - да');
Y:=readkey; if Y='y' then goto 1;
writeln('конец программы')
end.
program GAMMA; {программа гаммирования }
uses WinCrt;
var
i,j,k:integer;
f1,f2:file;
numf1,numf2:string;
nr,nw:word;
buf1,buf2:array[1..2048]of shortint;
bf:char;
G,C,A:integer;
function DAT:integer;
begin
G:=(G*A+C) mod 65535;
DAT:=G;
end;
begin
writeln(' программа гаммирования');
writeln(' введите имя шифруемого(расшифруемого) файла ');
readln(numf1);
assign(f1,numf1);
reset(f1,1);
writeln('файл открыт');
writeln(' введите имя зашифрованного(расшифрованного) файла');
readln(numf2);
assign(f2,numf2);
rewrite(f2,1);
writeln('введите A,C и G(0) (числа до 65535)');
readln(A,C,G);
repeat
blockread(f1,buf1,sizeof(buf1),nr);
for i:=1 to nr do
buf2[i]:=buf1[i] xor DAT;
blockwrite(f2,buf2,nr,nw);
until (nr=0) or (nw<>nr);
close(f1);
close(f2);
writeln(' файл зашифрован(расшифрован) ');
end.