Advertisement
artemgf

TMP

Dec 10th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.00 KB | None | 0 0
  1. #include "funcs.h"
  2.  
  3. int main()
  4. {
  5.     system("chcp 1251 > nul");
  6.     unsigned char line1;
  7.     unsigned char l;
  8.     unsigned int sum = 0;
  9.     int i = 0;
  10.     int A[256][256];  
  11.     for (int i = 0; i < 256; i++)
  12.     {
  13.         for (int j = 0; j < 256; j++)
  14.         {
  15.             A[i][j] = 0;
  16.         }
  17.     }
  18.                                                      //   (    чтение    )
  19.     ifstream fin("key1.txt", ios::in | ios::binary);
  20.     if (!fin)                     // cotrol
  21.     {
  22.         cout << "Error of file opening." << endl;
  23.         return 1;
  24.     }
  25.  
  26.     bool fl = true;
  27.     int kol = 0; // длина массива ключей
  28.     while (!fin.eof())         /// кол-во слов
  29.     {
  30.         line1 = fin.get();
  31.         if ((line1 == ' ') || (line1 == '\n'))
  32.         {
  33.             fl = true;
  34.         }
  35.         else
  36.         {
  37.             if (fl)
  38.             {
  39.                 kol++;
  40.             }
  41.             fl = false;
  42.         }
  43.     }
  44.     fl = false;
  45.     int* key = new int[kol];
  46.     //fin.seekg(1, ios_base::beg);
  47.     fin.clear();
  48.     fin.seekg(0);
  49.     unsigned char t;
  50.     while (fin.get((char&)line1))         /// массив ключей
  51.     {
  52.         if ((line1 == ' ') || (line1 == '\n'))
  53.         {
  54.             fl = true;
  55.         }
  56.         else
  57.         {
  58.             if (fl)
  59.             {    t = sum % 256;
  60.                 key[i] = t;
  61.                 //cout << key[i] << endl;
  62.                 sum = 0;
  63.                 i++;
  64.             }
  65.             sum = sum + line1;
  66.             fl = false;
  67.         }
  68.     }
  69.     //key = new int;
  70.     key[i] = sum % 256;
  71.     //cout << key[i] << endl;
  72.                        // массив заполнен юху-у-у-у!
  73.  
  74.     // выведим массив, чтобы убедиться, что все верно
  75.     /*for (int i = 0; i < kol; i++)
  76.     {
  77.         cout << key[i] << ' ';
  78.     }*/
  79.     fin.close();
  80.      
  81.     ifstream text("text.txt", ios::in);
  82.     if (!text.is_open())                     // cotrol
  83.     {
  84.         cout << "Error of file opening." << endl;
  85.         return 1;
  86.     }
  87.     ofstream crypt("crypt.txt", ios::out | std:: ios::binary);
  88.     if (!crypt.is_open())                     // cotrol
  89.     {
  90.         cout << "Error of file opening." << endl;
  91.         return 1;
  92.     }
  93.     i = 0;                                     //   запись кодирование
  94.     unsigned char cEOF = (unsigned char)(EOF);
  95.     while (text.get((char&)line1))
  96.     {
  97.         l = (unsigned char)((int)(line1) ^ key[i]);
  98.         A[(unsigned char)(line1)][(unsigned char)(line1) ^ key[i]]++;
  99.         //cout << l << endl;
  100.         crypt << l;
  101.         i++;
  102.         if (i == kol) { i = 0; }
  103.     }
  104.    
  105.    
  106.     crypt.close();
  107.     text.close();
  108.     ////// декодирование
  109.     ifstream code("crypt.txt", ios::in | std::ios::binary);
  110.     if (!code.is_open())                     // cotrol
  111.     {
  112.         cout << "Error of file opening code." << endl;
  113.         return 1;
  114.     }
  115.     ofstream decode("decode.txt", ios::out | std::ios::binary);
  116.     if (!decode.is_open())                     // cotrol
  117.     {
  118.         cout << "Error of file opening decode." << endl;
  119.         return 1;
  120.     }
  121.     i = 0;                                     //   запись декодирование
  122.     while (code.get((char&)line1))
  123.     {
  124.         l = (unsigned char)((int)(line1) ^ key[i]);
  125.         cout << l;
  126.         decode << l;
  127.         i++;
  128.         if (i == kol) { i = 0; }
  129.     }
  130.     cout<<endl;
  131.     //cout << (char)(EOF);
  132.     decode.close();
  133.     code.close();
  134.  
  135.     // statistic
  136.     st(A);
  137.     return 0;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement