0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 4
1

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

04.04.2014, 22:27. Показов 633. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, такая проблема, надеюсь поможете безвозмездно.
Имеется программа "шифрования"
Хочется чтобы спецы объяснили сам процесс шифрования, каким тут способом и как реализовано.
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();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2014, 22:27
Ответы с готовыми решениями:

Разъяснение по коду
Здравствуйте уважаемые киберфорумцы! Имеется вот такой код программы #include &lt;cmath&gt;...

Разъяснение float f = 1.2F;
Вчера читал статью про C++ и встретил код, написанный следующим методом float f = 1.2F; и пришел в...

Разъяснение по приоритетам операций С++
#include &lt;iostream&gt; using namespace std; int main() { int a=2; int b=1; int c=0;...

Разъяснение работы цикла while()
Всем добрый день. Я начинающий программист, да и к тому же учусь на Java. А тут попался код, на...

2
21 / 29 / 5
Регистрация: 03.06.2011
Сообщений: 329
04.04.2014, 22:35 2
Как я понял, тут у вас используется классический способ шифрования - с помощью исключающего ИЛИ. Фактически создается маска первоначального теста. Если к ней еще раз применить ключ и операцию исключающее ИЛИ, то получим исходное сообщение.
0
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 4
04.04.2014, 23:01  [ТС] 3
palantiron, А если подробней, чтобы донести мысль до препода?)
0
04.04.2014, 23:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2014, 23:01
Помогаю со студенческими работами здесь

Разъяснение алгоритмов задачи о рюкзаке для новичков
Есть несколько алгоритмов решения задачи о рюкзаке. Не могли бы вы написать комментарии к ним...

Различие между double и int, и разъяснение функции result
Добрый вечер кодеры , появился такой вопрос в чём различие между int и double , я понимаю что int...

Задача (разъяснение) в алгоритм (программа, используя базовый и производный классы, создавала массив объектов типа производного класса)
Задача на наследование классов, базовый класс - &quot;люди&quot;, производный - &quot;студенты&quot;...как я понял, а...

Разъяснение работы кода
Есть определённый программа, которая вызывает несколько функций с одинаковыми входными данными. ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru