Криптографія

Автор работы: Пользователь скрыл имя, 24 Ноября 2011 в 18:43, реферат

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

Тривалий час під криптографією розумілось лише шифрування — процес перетворення звичайної інформації (відкритого тексту) в незрозуміле «сміття» (тобто, шифротекст).[1] Дешифрування — це зворотній процес відтворення інформації із шифротексту. Шифром називається пара алгоритмів шифрування/дешифрування. Дія шифру керується як алгоритмами, та, в кожному випадку, ключем. Ключ — це секретний параметр (в ідеалі, відомий лише двом сторонам) для окремого контексту під час передачі повідомлення. Ключі мають велику важливість, оскільки без змінних ключей алгоритми шифрування легко зламуються і непридатні для використання в більшості випадків. Історично склалось так, що шифри часто використовуються для шифрування та дешифрування, без виконання додаткових процедур, таких як аутенифікація або перевірка цілісності.

Содержимое работы - 1 файл

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ.docx

— 111.63 Кб (Скачать файл)

#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

  char *text = new char [256];  //створення масиву символыв на 256 елемен(макс вмыст стрынг)

    strcpy(text,Form1->Memo1->Text.c_str());

          const char alfavit[34] = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя ";

              if(RadioButton1->Checked)

{

  switch(ComboBox1->ItemIndex)

{

  case 1 :                                                                                                                                                                                     14

  {

   char key [34]="утнхицшмйюпкбвгежлдфєврічїсоьящґз";

           for(int i = 0; i<Memo1->Text.Length();i++)

   {

           for(int j =0; j<33;j++)

    {

                  if(text[i]==alfavit[j])

     {

      text[i] = key[j];

      break;

     }

    }

   }

  }break;

//------------------------------------------------------------------------------

  case 0 :

{

  int a,b;

       try{

               a = StrToInt(Edit1->Text);

              b = StrToInt(Edit2->Text);

  }

  catch (EConvertError& e)

  {

   ShowMessage("введено не цифри!");

  }                                                                                                                                                                                               15

  for(int i =0; i<Memo1->Text.Length();i++)

  {

   for(int j =0; j<33; j++)

   {

          if(text[i]==alfavit[j])

    {

                int a_n = a*j+b;

                 a_n%=33;

     text[i] = alfavit[a_n];

     break;

    }

   }

  }

}break;

//------------------------------------------------------------------------------

  case 2 :

{

   StringGrid1->Visible=true;

         int d =0;

         int col_c=StrToInt(Edit1->Text);

          int row_c=StrToInt(Edit2->Text);

  StringGrid1->ColCount=col_c;

  StringGrid1->RowCount=row_c;

        for (int i =0;i<row_c;i++)

   {

        for (int j =0;j<col_c&&d<StrLen(text);j++)                                                                                                          16

    {

     StringGrid1->Cells[j][i]=text[d++];

    }

   }

   d=0;

   for (int i =0;i<col_c;i++)

   {

    for (int j =0;j<row_c&&d<=StrLen(text);j++)

    {

          іIf(StringGrid1->Cells[i][j]!="")

      text[d++]=StringGrid1->Cells[i][j][1];

    }

   }

}break;

  case 3 :

{

     int n_p;

     int zm = StrToInt(Edit1->Text);

      int i,j;

      for(i =0; i<StrLen(text);i++)

  {

          for(j =0; j<33;j++)

               if(text[i]==alfavit[j]) break;

                      n_p=(j+zm)%33;

   text[i]=alfavit[n_p];

  }                                                                                                                                                                                              17

};break;

  case 4 :

{

  char *key = new char [Memo1->Text.Length()];

     strcpy(key,ret_s().c_str());

          int i,j,k;

               for(i = 0; i<Memo1->Text.Length(); i++)

  {

              for(j = 0; j<34; j++)

                     if(text[i]==alfavit[j])

     break;

              for(k = 0; k<34; k++)

                     if(*(key+i)==alfavit[k])

     break;

   text[i] = alfavit[(j+k)%34];

   }

  };break;

};

}

//------------------------------------------------------------------------------

  else if(RadioButton2->Checked)

{

   switch(ComboBox1->ItemIndex)

  {

   case 1 :

   {                                                                                                                                                                                                 18

    char key [34]="утнхицшмйюпкбвгежлдфєврічїсоьящґз";

          for(int i = 0; i<Memo1->Text.Length();i++)

    {

          for(int j =0; j<33;j++)

     {

           if(text[i]==key[j])

      {

       text[i] = alfavit[j];

       break;

      }

     }

    }

   }break;

//------------------------------------------------------------------------------

  case 0 :

{

  int a,b;

          a = StrToInt(Edit1->Text);

          b = StrToInt(Edit2->Text);

  int z;

          for (z = 1;z<=33;z++)

  {

              if(a*z%33==1)

    break;

  }

  for (int i =0;i<StrLen(text);i++)                                                                                                                                          19

  {

    for(int j = 0; j<33; j++)

    {

     if(text[i]==alfavit[j])

     {

      int k_n = (j - b)*z%33;

        text[i]=alfavit[k_n];

      break;

     }

    }

   }

}break;

//------------------------------------------------------------------------------

  case 2 :

{

   StringGrid1->Visible=true;

          int d =0;

          int col_c=StrToInt(Edit1->Text);

          int row_c=StrToInt(Edit2->Text);

   StringGrid1->ColCount=col_c;

   StringGrid1->RowCount=row_c;

         for (int i =0;i<col_c;i++)

   {

         for (int j =0;j<row_c&&d<StrLen(text);j++)

     StringGrid1->Cells[i][j]=text[d++];

   }                                                                                                                                                                                                20

   d=0;

       for (int i =0;i<row_c;i++)

   {

       for (int j =0;j<col_c&&d<strlen(text);j++)

            text[d++]=StringGrid1->Cells[j][i][1];

   }

}break;

  case 3 :

{

  int n_p;

  int zm = StrToInt(Edit1->Text);

  int i,j;

      for(i =0; i<StrLen(text);i++)

  {

        f or(j =0; j<33;j++)

              if(text[i]==alfavit[j]) break;

   n_p=(j-zm)%33;

   text[i]=alfavit[n_p];

  }

};break;

  case 4 :

{

  char *key = new char [Memo1->Text.Length()];

  strcpy(key,ret_s().c_str());

        int i,j,k,z;

  for(i = 0; i<Memo1->Text.Length(); i++)                                                                                                                   21

  {

   for(j = 0; j<34; j++)

         if(text[i]==alfavit[j])

     break;

   for(k = 0; k<34; k++)

         if(*(key+i)==alfavit[k])

     break;

   z = j-k;

   if(z<0)

    z+=34;

 

   text[i] = alfavit[z];

  }

};break;

};

}

//---------------------------------------------------

Информация о работе Криптографія