SHARE
TWEET

Untitled

a guest Dec 14th, 2019 88 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string.h>
  3. #include <fstream>
  4. #include <Windows.h>
  5. using namespace std;
  6.  
  7. int main()
  8.  
  9. {
  10.  
  11.     SetConsoleCP(1251);
  12.     SetConsoleOutputCP(1251);
  13.     ifstream key; // входной файловый поток
  14.     key.open("key.txt");
  15.     if (!key) {
  16.         cout << "Error of file opening." << endl;
  17.         return 1;
  18.     }
  19.     key.clear();
  20.     key.seekg(NULL);
  21.  
  22.     int arrk[256]; // массив ключей (ключ - сумма кодов элементов в 1 слове)
  23.     int sum = 0;   // сумма кодов
  24.     int n = 0;   // количество слов
  25.     char el;   //
  26.  
  27.     while (key.get(el))
  28.     {
  29.         if (el != ' ') {
  30.             sum += (unsigned int(el)) % 256;
  31.         }
  32.         else
  33.         {
  34.             arrk[n] = sum;
  35.             n++;
  36.             sum = 0;
  37.         }
  38.     }
  39.     arrk[n] = sum;
  40.  
  41.  
  42.  
  43.     /*for (int i = 0; i <= n; i++)
  44.     {
  45.         cout << arrk[i] << " ";
  46.  
  47.     }*/
  48.  
  49.     key.close();
  50.  
  51.     ifstream orig;
  52.     orig.open("исходный.txt", ios::binary | ios::in);
  53.     if (!orig) {
  54.         cout << "Error of file opening." << endl;
  55.         return 1;
  56.     }
  57.  
  58.     char el1; // элементы исходного текста
  59.     int i = 0;
  60.     int stat[256][256];
  61.  
  62.     for (int i = 0; i < 256; i++)
  63.     {
  64.         for (int j = 0; j < 256; j++)
  65.         {
  66.             stat[i][j] = 0;
  67.  
  68.         }
  69.     }
  70.     fstream shifr;
  71.     shifr.open("зашифрованный.txt", ios::binary | ios::out);
  72.     while (orig.get(el1))
  73.     {
  74.         stat[(unsigned char(el1)) % 256][((unsigned char(el1) % 256) + arrk[i % n]) % 256]++;
  75.         shifr << char(((unsigned int(el1) % 256) + arrk[i % n]) % 256);
  76.         i++;
  77.     }
  78.     shifr.close();
  79.     /*shifr.clear();
  80.     shifr.seekg(NULL);*/
  81.     shifr.open("зашифрованный.txt", ios::binary | ios::in);
  82.     ofstream deshifr;
  83.     deshifr.open("расшифрованный.txt", ios::binary | ios::out);
  84.     i = 0;
  85.     char el2;
  86.     while (shifr.get(el))
  87.     {
  88.         el2 = char(((unsigned int(el) % 256) - arrk[i % n]));
  89.         i++;
  90.         deshifr << el2;
  91.     }
  92.     shifr.close();
  93.     deshifr.close();
  94.     orig.close();
  95.    
  96.     char el3;
  97.     cin.get(el3);
  98.     for (int i = 0; i < 256; i++)
  99.     {
  100.         if (stat[unsigned char(el3)][i] != 0)
  101.         {
  102.             cout << unsigned char(i) << ' ' << stat[unsigned char(el3)][i];
  103.             cout << endl;
  104.         }
  105.  
  106.     }
  107.  
  108.     system("pause");
  109.  
  110.     return 0;
  111.  
  112. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top