Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "lab_7_Header.h"
- int main()
- {
- system("chcp 1251 > nul");
- unsigned char line1;
- unsigned char l;
- int sum = 0;
- int i = 0;
- int A[256][256];
- for (int i = 0; i < 256; i++)
- {
- for (int j = 0; j < 256; j++)
- {
- A[i][j] = 0;
- }
- }
- // ( чтение )
- ifstream fin("c:\\Users\\Admin\\source\\repos\\text\\key1.txt", ios::in | ios::binary);
- if (!fin) // cotrol
- {
- cout << "Error of file opening." << endl;
- return 1;
- }
- bool fl = true;
- int kol = 0; // длина массива ключей
- while (!fin.eof()) /// кол-во слов
- {
- line1 = fin.get();
- if ((line1 == ' ') || (line1 == '\n'))
- {
- fl = true;
- }
- else
- {
- if (fl)
- {
- kol++;
- }
- fl = false;
- }
- }
- fl = false;
- int* key = new int[kol];
- //fin.seekg(1, ios_base::beg);
- fin.clear();
- fin.seekg(0);
- int t;
- while (!fin.eof()) /// массив ключей
- {
- line1 = fin.get();
- if ((line1 == ' ') || (line1 == '\n'))
- {
- fl = true;
- }
- else
- {
- if (fl)
- { t = sum % 256;
- key[i] = t;
- //cout << key[i] << endl;
- sum = 0;
- i++;
- }
- sum = sum + line1;
- fl = false;
- }
- }
- sum = sum - line1;
- //key = new int;
- key[i] = sum % 256;
- //cout << key[i] << endl;
- // массив заполнен юху-у-у-у!
- // выведим массив, чтобы убедиться, что все верно
- /*for (int i = 0; i < kol; i++)
- {
- cout << key[i] << ' ';
- }*/
- fin.close();
- ifstream text("c:\\Users\\Admin\\source\\repos\\text\\text.txt", ios::in | std::ios::binary);
- if (!text.is_open()) // cotrol
- {
- cout << "Error of file opening." << endl;
- return 1;
- }
- ofstream crypt("c:\\Users\\Admin\\source\\repos\\text\\crypt.txt", ios::out | std:: ios::binary);
- if (!crypt.is_open()) // cotrol
- {
- cout << "Error of file opening." << endl;
- return 1;
- }
- i = 0; // запись кодирование
- unsigned char cEOF = (unsigned char)(EOF);
- while (!text.eof())
- {
- line1 = text.get();
- if (line1 == cEOF)
- {
- break;
- }
- l = (unsigned char)((int)(line1) ^ key[i]);
- A[(int)(line1)][(int)(line1) ^ key[i]]++;
- //cout << l << endl;
- crypt << l;
- i++;
- if (i == kol) { i = 0; }
- }
- crypt.close();
- text.close();
- ////// декодирование
- ifstream code("c:\\Users\\Admin\\source\\repos\\text\\crypt.txt", ios::in | std::ios::binary);
- if (!code.is_open()) // cotrol
- {
- cout << "Error of file opening code." << endl;
- return 1;
- }
- ofstream decode("c:\\Users\\Admin\\source\\repos\\text\\decode.txt", ios::out | std::ios::binary);
- if (!decode.is_open()) // cotrol
- {
- cout << "Error of file opening decode." << endl;
- return 1;
- }
- i = 0; // запись декодирование
- while (!code.eof())
- {
- line1 = code.get();
- if ( line1 == cEOF)
- {
- break;
- }
- l = (unsigned char)((int)(line1) ^ key[i]);
- cout << l;
- decode << l;
- i++;
- if (i == kol) { i = 0; }
- }
- cout<<endl;
- //cout << (char)(EOF);
- decode.close();
- code.close();
- // statistic
- st(A);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement