Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- #include <fstream>
- #include <Windows.h>
- using namespace std;
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- ifstream key; // входной файловый поток
- key.open("key.txt");
- if (!key) {
- cout << "Error of file opening." << endl;
- return 1;
- }
- key.clear();
- key.seekg(NULL);
- int arrk[256]; // массив ключей (ключ - сумма кодов элементов в 1 слове)
- int sum = 0; // сумма кодов
- int n = 0; // количество слов
- char el; //
- while (key.get(el))
- {
- if (el != ' ') {
- sum += (unsigned int(el)) % 256;
- }
- else
- {
- arrk[n] = sum;
- n++;
- sum = 0;
- }
- }
- arrk[n] = sum;
- /*for (int i = 0; i <= n; i++)
- {
- cout << arrk[i] << " ";
- }*/
- key.close();
- ifstream orig;
- orig.open("исходный.txt", ios::binary | ios::in);
- if (!orig) {
- cout << "Error of file opening." << endl;
- return 1;
- }
- char el1; // элементы исходного текста
- int i = 0;
- int stat[256][256];
- for (int i = 0; i < 256; i++)
- {
- for (int j = 0; j < 256; j++)
- {
- stat[i][j] = 0;
- }
- }
- fstream shifr;
- shifr.open("зашифрованный.txt", ios::binary | ios::out);
- while (orig.get(el1))
- {
- stat[(unsigned char(el1)) % 256][((unsigned char(el1) % 256) + arrk[i % n]) % 256]++;
- shifr << char(((unsigned int(el1) % 256) + arrk[i % n]) % 256);
- i++;
- }
- shifr.close();
- /*shifr.clear();
- shifr.seekg(NULL);*/
- shifr.open("зашифрованный.txt", ios::binary | ios::in);
- ofstream deshifr;
- deshifr.open("расшифрованный.txt", ios::binary | ios::out);
- i = 0;
- char el2;
- while (shifr.get(el))
- {
- el2 = char(((unsigned int(el) % 256) - arrk[i % n]));
- i++;
- deshifr << el2;
- }
- shifr.close();
- deshifr.close();
- orig.close();
- char el3;
- cin.get(el3);
- for (int i = 0; i < 256; i++)
- {
- if (stat[unsigned char(el3)][i] != 0)
- {
- cout << unsigned char(i) << ' ' << stat[unsigned char(el3)][i];
- cout << endl;
- }
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement