Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <locale.h>
- #include <iostream>
- #include <conio.h>
- using namespace std;
- int const MAX_SYMBOLS=1000; //Максимальное количество символов
- void Encrypted(unsigned char *data, unsigned char *rezult) //Функция шифрования данных
- {
- unsigned char gamma, bit, maska=0x80;
- int i=0;
- while(data[i])
- {
- gamma=rand(); //Генерируем гамму с помощью генератора псевдослучайных чисел
- rezult[i] = data[i] ^ gamma; //Накладываем гамму на исходный блок данных, используя операцию поразрядного исключающего "ИЛИ"
- bit = rezult[i] & maska; //Накладываем маску, чтобы выделить отдельные биты
- bit>>=7;
- rezult[i] = rezult[i] << 1; //Выполняем операцию поразрядного циклического сдвига на 1 бит влево
- rezult[i] |= bit;
- i++;
- }
- rezult[i] = '\0';
- }
- void Decrypted(unsigned char *data, unsigned char *rezult) //Функция дешифрования данных
- {
- unsigned char gamma, bit, maska=0x01;
- int i=0;
- while(data[i])
- {
- rezult[i] = data[i];
- bit = rezult[i] & maska; //Накладываем маску, чтобы выделить отдельные биты
- rezult[i] = rezult[i] >> 1; //Выполняем обратную операцию поразрядного циклического сдвига на 1 бит вправо для расшифровки данных
- bit<<=7;
- rezult[i] |= bit;
- gamma = rand(); //Генерируем гамму с помощью генератора псевдослучайных чисел
- rezult[i] = rezult[i] ^ gamma; //Накладываем гамму на зашифрованный блок данных блок данных, используя операцию поразрядного исключающего "ИЛИ"
- i++;
- }
- rezult[i] = '\0';
- }
- void main()
- {
- setlocale(LC_ALL, "rus");
- unsigned char input[MAX_SYMBOLS], encrypted_data[MAX_SYMBOLS], decrypted_data[MAX_SYMBOLS];
- /*
- input - исходные данные
- encrypted_data - зашифрованные данные
- decrypted_data - расшифрованные данные
- */
- cout << "Введите исходные данные: ";
- gets((char *)input); //Ввод исходных данных
- int key; //Секретный ключ
- cout << "key=";
- cin >> key; //Ввод секретного ключа
- cout << endl;
- srand(key); //Инициализация секретного ключа
- Encrypted(input,encrypted_data); //Вызываем функцию шифрования данных
- cout << "Зашифрованные данные:" << endl;
- cout << encrypted_data << endl; //Вызов на экран зашифрованных данных
- cout << endl;
- cout << "key=";
- cin >> key; //Ввод секретного ключа
- cout << endl;
- srand(key); //Повторная инициализация секретного ключа
- cout << "Расшифрованные данные:" << endl;
- Decrypted(encrypted_data,decrypted_data); //Вызываем функцию расшифрования данных
- cout << decrypted_data << endl; //Вызов на экран Расшифрованных данных
- _getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement