Автор работы: Пользователь скрыл имя, 29 Мая 2012 в 12:16, контрольная работа
Задание: Зашифровать информацию по методу RSA для последующей передачи. В соответствии с вариантом, шифруемое слово БАГАЖ.
begin
ListBox1.Items.Add(IntToStr(d)
//сколько равно Ко (если например Ko=11 то добавляем 11 раз
end;
A1:
while ListBox1.Items.Count > 1 do //Цикл. Делать пока количество элементов в списке ListBox1 больше одного
begin
t1:=(StrToInt(ListBox1.Items[
//Перемножаем их и вычисляем mod
//т.к тип списка ListBox может содержать только строковые переменныые,
//то предварительно переводим числа в текст - функция IntToStr
ListBox2.Items.Add(IntToStr(t1
ListBox1.Items.Delete(1); //А из списка ListBox1 эти два числа удаляем и так пока
ListBox1.Items.Delete(0); //количесво чисел в списке ListBox1 больше одного.
end;
if ListBox1.Items.Count>0 then //Если что-то осталось в ListBox1 то всё это добавляем в ListBox2
for i:=0 to ListBox1.Items.Count-1 do // Цикл добавления от 0 до количества элементов в ListBox1
ListBox2.Items.Add(ListBox1.
if ListBox2.Items.Count>1 then //Теперь если количество чисел в списке ListBox2 больше одного,
begin
ListBox1.Items.Assign(ListBox2
ListBox2.Items.Clear;
GoTo A1;
end;
//Если в списке только одно число, то...
//Значит функция mod и возведение в степень выполнено
If ListBox2.Items.Count = 1 then
begin
ListBoxShifr.Items.Add(
//Буква шифруемого слова зашифрована - показываем её:
if Edit7.Text = '' then Edit7.Text:=ListBox2.Items[0] else Edit7.Text:=Edit7.Text+','+
end
else ShowMessage('Программа не нашла mod!'); //Ошибка в программе
end;
end;
//----------------------------
//Процедура расшифровки
//Эта процедура почти полностью повторяет предыдущую. Т.к. формулы
//для зашифровки и расшифровки одна и та же. Только Ко меняем на Кс.
procedure TForm1.RasShifr2;
var
s:string;
d,t1:Int64;
i,i1:integer;
Label A1;
begin
s:=Edit5.Text;
Kc:=StrToInt(EditKc.Text);
Edit8.Text:='';
for i1:=0 to ListBoxShifr.Items.Count-1 do
begin
d:=StrToInt(ListBoxShifr.
ListBox1.Items.Clear;
ListBox2.Items.Clear;
for i:=1 to Kc do
begin
ListBox1.Items.Add(IntToStr(d)
end;
A1:
while ListBox1.Items.Count > 1 do
begin
t1:=(StrToInt(ListBox1.Items[
ListBox2.Items.Add(IntToStr(
ListBox1.Items.Delete(1);
ListBox1.Items.Delete(0);
end;
if ListBox1.Items.Count>0 then
for i:=0 to ListBox1.Items.Count-1 do
ListBox2.Items.Add(ListBox1.
if ListBox2.Items.Count>1 then
begin
ListBox1.Items.Assign(
ListBox2.Items.Clear;
GoTo A1;
end;
If ListBox2.Items.Count = 1 then
begin
if Edit8.Text = '' then Edit8.Text:=ListBox2.Items[0] else Edit8.Text:=Edit8.Text+','+
end
else ShowMessage('Программа не нашла mod!');
end;
end;
//----------------------------
procedure TForm1.Button3Click(Sender: TObject);
begin
Shifr2;
end;
//----------------------------
procedure TForm1.Button5Click(Sender: TObject);
begin
Form2.Show;
end;
//----------------------------
procedure TForm1.Button6Click(Sender: TObject);
begin
Form3.Show;
end;
//----------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
//----------------------------
procedure TForm1.Button4Click(Sender: TObject);
begin
RasShifr2;
end;
//----------------------------
procedure TForm1.Button7Click(Sender: TObject);
begin
Form4.Memo1.Lines.
Form4.Show;
end;
//----------------------------
//Тоже самое что процедура Shifr2
procedure TForm1.Shifr3;
var
z,z1,x,d:Int64;
s:string;
Ch:char;
i:integer;
begin
s:=Edit5.Text;
if (Ko div 2) <> (Ko / 2) then
begin
for i:=1 to Length(s) do
begin
Ch:=s[i]; //Берём символ строки
d:=Ord(Ch)-191; //Код буквы А-1, Б-2 и.т.д.
z:=d; z1:=Ko-1;
while z1>0 do
begin
z:=(z*z) mod N;
z1:=z1-2;
end;
x:=d mod N;
x:=(x*z) mod N;
if Edit7.Text = '' then Edit7.Text:=IntToStr(x) else Edit7.Text:=Edit7.Text+','+
end;
end;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Shifr3;
end;
end.
Информация о работе Методы и средства защиты компьютерной информации