Метод Гаммирования
.docxМинистерство Образования и Науки Кыргызской Республики
Кыргызский Государственный Технический Университет
им. И. Раззакова
Отчет
По дисциплине: Криптография
Бишкек 2020 год
Метод Гаммирования
Входные данные
Текст: facultyofinformationtechnologyinkyrgyzstan
Гамма: kyrgyz
Результат работы
Реализация на С++
#include <iostream>
using namespace std;
const int FIRST_SYMBOL = ' '; // первый символ
const int SYMBOL_NUMBER = 95; // для простоты кодируем только английский алфавит
void GammaCoding(char *input, char *gamma, char *result)
{
for (char *i = input, *j = gamma; *i; i++, j++)
{
if (!(*j)) j = gamma;
int Ti = *i - FIRST_SYMBOL;
int Gi = *j - FIRST_SYMBOL;
*(result++) = FIRST_SYMBOL + (Ti + Gi) % SYMBOL_NUMBER;
}
*result = '\0';
}
void GammaDecoding(char *input, char *gamma, char *result)
{
for (char *i = input, *j = gamma; *i; i++, j++)
{
if (!(*j)) j = gamma;
int Ci = *i - FIRST_SYMBOL;
int Gi = *j - FIRST_SYMBOL;
*(result++) = FIRST_SYMBOL + (Ci - Gi + SYMBOL_NUMBER) % SYMBOL_NUMBER;
}
*result = '\0';
}
int main()
{
setlocale(LC_ALL, "rus");
char str1[256], gamma[256], rez[256];
cout << "Введите исходное сообщение: ";
cin >> str1;
cout << "Введите гамму: ";
cin >> gamma;
GammaCoding(str1, gamma, rez);
cout << "Зашифрованное сообщение: ";
cout << rez << endl;
cout << "Введите зашифрованное сообщение: ";
cin >> rez;
GammaDecoding(rez, gamma, str1);
cout << "Исходное сообщение: ";
cout << str1 << endl;
system("pause");
return 0;
}