Методы и средства защиты компьютерной информации

Автор работы: Пользователь скрыл имя, 29 Мая 2012 в 12:16, контрольная работа

Краткое описание

Задание: Зашифровать информацию по методу RSA для последующей передачи. В соответствии с вариантом, шифруемое слово БАГАЖ.

Прикрепленные файлы: 1 файл

Контрольная работа.doc

— 98.00 Кб (Скачать документ)

  begin

  ListBox1.Items.Add(IntToStr(d));  //Добавляем в список число d столько раз,

  //сколько равно Ко (если например Ko=11 то добавляем 11 раз

  end;

A1:

while ListBox1.Items.Count > 1 do  //Цикл. Делать пока количество элементов в списке ListBox1 больше одного

  begin

  t1:=(StrToInt(ListBox1.Items[0])*StrToInt(ListBox1.Items[1])) mod N; //Берём два числи в списке ListBox1,

  //Перемножаем их и вычисляем mod

  //т.к тип списка ListBox может содержать только строковые переменныые,

  //то предварительно переводим числа в текст - функция IntToStr

  ListBox2.Items.Add(IntToStr(t1)); //Результат добавляем в список ListBox2

  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.Items[i]);  //    -//-

 

  if ListBox2.Items.Count>1 then            //Теперь если количество чисел в списке ListBox2 больше одного,

    begin                                   //то теперь наоборот все числа из ListBox2 копируем в ListBox1

    ListBox1.Items.Assign(ListBox2.Items); //Assign - процедура полного преноса всего, что есть из ListBox2 в ListBox1

    ListBox2.Items.Clear;                  //Очищаем ListBox2

    GoTo A1;                               //Переходим на метку на начало и повторяем всё т.к mod не полностью найден

                                           //Нужно продолжать перемножать числа в ListBox1 - это нужно делать до тех пор пока

                                           //не останется одно число

    end;

 

  //Если в списке только одно число, то...

  //Значит функция mod и возведение в степень выполнено

  If ListBox2.Items.Count = 1 then

    begin

    ListBoxShifr.Items.Add(ListBox2.Items[0]); //Отладочная инфа - не нужно

    //Буква шифруемого слова зашифрована - показываем её:

    if Edit7.Text = '' then Edit7.Text:=ListBox2.Items[0] else Edit7.Text:=Edit7.Text+','+ListBox2.Items[0];

    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.Items[i1]);

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[0])*StrToInt(ListBox1.Items[1])) mod N;

  ListBox2.Items.Add(IntToStr(t1));

  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.Items[i]);

 

  if ListBox2.Items.Count>1 then

    begin

    ListBox1.Items.Assign(ListBox2.Items);

    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+','+ListBox2.Items[0];

    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.LoadFromFile(ExtractFilePath(Application.ExeName)+'Unit1.pas');

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+','+IntToStr(x);

    end;

  end;

 

 

end;

 

procedure TForm1.Button8Click(Sender: TObject);

begin

  Shifr3;

end;

end.



Информация о работе Методы и средства защиты компьютерной информации