Форум программистов, компьютерный форум CyberForum.ru

Разъяснение кода - C++

Восстановить пароль Регистрация
 
RFskynet
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 4
04.04.2014, 22:27     Разъяснение кода #1
Доброго времени суток, такая проблема, надеюсь поможете безвозмездно.
Имеется программа "шифрования"
Хочется чтобы спецы объяснили сам процесс шифрования, каким тут способом и как реализовано.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include<iostream.h>
#include<conio.h>
#include<fstream.h>
#include<string.h>
#include<math.h>
#include"rus.h"
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
void main()
{
char* kluch; //резервируем адрес для ключевого выражения
ifstream inp("Input.txt"); //записись
ofstream out("Output.txt"); //из
if(!inp)
{
cout«Rus("ОТСУТСТВУЕТ ФАЙЛ Input.txt");
getch();
exit(1);
} 
cout«Rus("ВВЕДИТЕ КЛЮЧ (БЕЗ ПРОБЕЛОВ)");
cin»kluch;
int n=strlen(kluch); //длина ключа
int b,j,i=0;
for(int k=0;k<n;k++)
{ //преобразование символов ключа в прописные
b=kluch[k];
if(b<=-33&&b>=-64)b+=32; //A->а,Б->б,...(русский алфавит)
if(b==-81||b==-88||b==-86)b+=16; //Ї->ї,Є->є,Ё->ё
if(b<=90&&b>=65)b+=32; //A->a, B->b,...(английский )
kluch[k]=b;
}
char temp,buffer=NULL;//buffer-считываемый символ,temp- преобразованный символ
 
while(!inp.eof()) //пока не достигнут конец файла
{
inp.read((char*)&buffer,sizeof(buffer));//считываем очередной символ
if(buffer==NULL)break;// если файл пустой
b=buffer;
//преобразование символов исходного текста в заглавные
if(b>=-32&&b<=-1)b-=32; //а->А,б->Б,...(русский алфавит)
if(b==-65||b==-72||b==-70)b-=16; //ї->Ї,є->Є,ё->Ё
if(b>=97&&b<=122)b-=32; //a->A, b->B,...(английский )
buffer=b;
 
j=fmod(i,n); // переменная j циклически изменяется от 0 до n-1
temp=buffer^kluch[j];// применяем операцию "исключающее ИЛИ"
out.put(temp); //записываем кодированный символ
i++; //переходим к следующему символу ключевого слова
buffer=NULL; 
}
 
inp.close();
out.close();
cout«Rus("ЗАШИФРОВАННЫЙ ТЕКСТ НАХОДИТСЯ В ФАЙЛЕ Output.txt");
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2014, 22:27     Разъяснение кода
Посмотрите здесь:

Создание кода программы с нуля!! создание кода C++ C++
C++ разъяснение строки C++
Разъяснение работы цикла while() C++
Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему? C++
Задача (разъяснение) в алгоритм (программа, используя базовый и производный классы, создавала массив объектов типа производного класса) C++
C++ Разъяснение по коду
C++ Разъяснение по приоритетам операций С++
Разъяснение float f = 1.2F; C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palantiron
 Аватар для palantiron
21 / 30 / 2
Регистрация: 03.06.2011
Сообщений: 330
04.04.2014, 22:35     Разъяснение кода #2
Как я понял, тут у вас используется классический способ шифрования - с помощью исключающего ИЛИ. Фактически создается маска первоначального теста. Если к ней еще раз применить ключ и операцию исключающее ИЛИ, то получим исходное сообщение.
RFskynet
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 4
04.04.2014, 23:01  [ТС]     Разъяснение кода #3
palantiron, А если подробней, чтобы донести мысль до препода?)
Yandex
Объявления
04.04.2014, 23:01     Разъяснение кода
Ответ Создать тему
Опции темы

Текущее время: 13:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru