Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 7
1

Нужно написать, доработать программу шифрующую текст в С++

02.07.2018, 17:37. Показов 961. Ответов 9

Есть файл в котором написан текст(input.txt) нужно к нему применить ключ в виде файла(key.txt) и зашифрованный текст сохранить в файл (output), и тут же нужно доделать чтобы можно было дешифровать, только вот ключ чтобы вводился с клавиатуры

Вот что самому получилось сделать но оно не работает
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
#include <fstream>
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "rus");
    
char input[100];
char key[4];
char output[100];
 
    
    ifstream file1("input.txt"); 
    file1.getline(file1, 100);
    file1.close();
   
    
    ifstream file2("key.txt"); 
    file2.getline(file2, 4);
    file2.close();
  
    
    ifstream file3("output.txt"); 
    file3.getline(file3, 100);
    file3.close();
    
    int k = 0;
    int j = 0;
    
    for (int i = 0; i < k-1; i++)
    {
        text[i]=fgets(input);
    }
    for (int i = 0; i < k-1; i++)
    {if (l<3)
    {
        j++ 
    }
    shif[i]=text[i]^keyc[j];
    j++;
    }
    for(int i= 0; i < k-1; i++)
    {
        fputs(shif[i],output);
    }
    ifstream file4("output.txt"); 
    file4.getline(file4, 100);
    file4.close();
    cout << file4 << endl;
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2018, 17:37
Ответы с готовыми решениями:

Составить программу, шифрующую исходный текст перестановкой
Составить программу, шифрующую исходный текст перестановкой с помощью таблицы. Строковый тип...

написать программу, шифрующую и дешифрующую указанный с консоли текстовый файл
написать программу на С\С++,шифрующую и дешифрующую указанный с консоли текстовый файл.Программа...

Нужно написать программу считывающую текст
Помогите написать, срочно нужно

Нужно доработать. Дан произвольный текст, удалить n-символов начиная с q-го
Дан произвольный текст, удалить n-символов начиная с q-го #include &lt;stdio.h&gt; #include &lt;conio.h&gt;...

9
81 / 77 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
02.07.2018, 17:43 2
Цитата Сообщение от Quiet1205 Посмотреть сообщение
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
#include <fstream>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
setlocale (LC_ALL, "rus");
char input[100];
char key[4];
char output[100];
ifstream file1("input.txt"); 
file1.getline(file1, 100);
file1.close();
ifstream file2("key.txt"); 
file2.getline(file2, 4);
file2.close();
ifstream file3("output.txt"); 
file3.getline(file3, 100);
file3.close();
int k = 0;
int j = 0;
for (int i = 0; i < k-1; i++)
{
text[i]=fgets(input);
}
for (int i = 0; i < k-1; i++)
{if (l<3)
{
j++ 
}
shif[i]=text[i]^keyc[j];
j++;
}
for(int i= 0; i < k-1; i++)
{
fputs(shif[i],output);
}
ifstream file4("output.txt"); 
file4.getline(file4, 100);
file4.close();
cout << file4 << endl;
system("pause");
return 0;
}
так то лучше

Добавлено через 1 минуту
Цитата Сообщение от Quiet1205 Посмотреть сообщение
ключ в виде файла(key.txt)
что за ключ? они разные могут быть
1
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 7
02.07.2018, 17:45  [ТС] 3
Цитата Сообщение от Quiet1205 Посмотреть сообщение
{if (l<3)
тут попутал тут j++
0
81 / 77 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
02.07.2018, 17:48 4
Quiet1205, какой пример ключа?
0
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 7
02.07.2018, 17:59  [ТС] 5
4 любые символа например qqqq

Добавлено через 7 минут
k0vpack, 4 любые символа например qqqq

Добавлено через 3 минуты
4 любые символа например qqqq

Добавлено через 39 секунд
k0vpack, 4 любые символа например qqqq
0
81 / 77 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
02.07.2018, 18:16 6
Quiet1205, а есть правила кодировки? или просто, главное что бы код куда то влепить?
0
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 7
02.07.2018, 18:20  [ТС] 7
k0vpack,я попытался на fopen сделать но тут у меня выдаёт в конце букву я когда выводит строку input
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
60
61
62
#include <iostream>
#include <stdio.h>
#include <locale.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Rus");
    FILE* input;
    FILE* key;
    FILE* output;
    input = fopen("E:\\Новая папка123\\input.txt", "r");
    if ((input=fopen("E:\\Новая папка123\\input.txt","r"))==NULL)
    {
            cout << "Невозможно открыть файл input.txt" << endl;
    }
key = fopen("E:\\Новая папка123\\key.txt", "r");
    if ((key=fopen("E:\\Новая папка123\\key.txt","r"))==NULL)
    {
        cout << "Невозможно открыть файл key.txt" << endl;
    }
    output = fopen("E:\\Новая папка123\\output.txt", "w");
    if ((output=fopen("E:\\Новая папка123\\output.txt","w"))==NULL)
    {
        cout << "Невозможно открыть файл output.txt" << endl;
    }
    int size = 300;
char* text;
    text = new char[size];
    char* shif;
    shif = new char[size];
    int keysize = 4;
    char* keyc;
    keyc = new char[keysize];
    int j=0;
    for (int i=0; !feof(key); i++)
    {
        keyc[i]=fgetc(key);
    }
    for (int i=0; !feof(input); i++)
    {
        if (j>3)
        {
            j=0;
        }
        text[i]=fgetc(input);
        if (text[i]!='\0')
        {
            cout << text[i];
            shif[i]=text[i]^keyc[j];
            putc(shif[i], output);
            j++;
        }
}
    fclose(input);
    fclose(key);
    fclose(output);
    
    system("pause");
    return 0;
}
0
81 / 77 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
02.07.2018, 18:20 8
Лучший ответ Сообщение было отмечено Quiet1205 как решение

Решение

Quiet1205,
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
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
 
using namespace std;
 
int CharToInt(char ch)
{
    switch(ch)
    {
        case 48: return 1;break;
        case 49: return 2;break;
        case 50: return 3;break;
        case 51: return 4;break;
        case 52: return 5;break;
        case 53: return 6;break;
        case 54: return 7;break;
        case 55: return 8;break;
        case 56: return 9;break;
        case 57: return 0;break;
    }
}
 
int StrToInt(string str)
{
    int retInt = 1;
    for(int i = 0; i < str.length(); i++)
    {
        if(i != 0)
        { retInt *= 10;
          retInt += CharToInt(str[i]);
        }
        else retInt = CharToInt(str[i]);
    }
    return retInt;
}
 
int main() {
    string Input = "I like this programm, because i like anonimous!";
    string Key = "1234";
    string OutPut;
    int tmp = 1;
    
    tmp = StrToInt(Key) * 341;
        
    cout << tmp;
        
    for(int i = 0; i < Input.length(); i++)
    {
        if(Input[i] - tmp > 33)
        {
            OutPut += Input[i] - tmp; 
            OutPut += "+";
        }
        else 
        {
            OutPut += Input[i] + tmp;
            OutPut += "-";
        }
    }
    cout << OutPut;
    cout << endl << endl;
    Input = "";
    for(int i = 0, j = 1; i < OutPut.length(); i+=2, j+=2)
    {
        if(OutPut[j] == '+')
            Input += OutPut[i] + tmp;
        else Input += OutPut[i] - tmp;
    }
    cout << Input;
    return 0;
}
пойдет? переделать под файлы думаю уже сам сможеш

забыл, вставь это еще в 59 строку:
C++
1
2
3
4
5
6
cout << OutPut;
    cout << endl << endl;
    cout << "If you want to uncodding text, enter key: ";
    cin >> Key;
    tmp = StrToInt(Key) * 341;
    Input = "";
если в консоли ничего не будет видно то 341 поменяй в двух местах на цифру поменьше
1
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 7
02.07.2018, 18:27  [ТС] 9
k0vpack, спасибо, попытаюсь, надо же так чтобы при сдаче преподаватель понял что я сам писал
0
81 / 77 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
02.07.2018, 18:29 10
Quiet1205, мой код то по проще будет для понимания
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2018, 18:29

Нужно доработать программу!
Есть готовая программа со всеми файлами. Нужно немного изменить условия в коде. Кто сможет помочь?

Нужно доработать программу
Есть программа на С++ Builder, в неё необходимо добавить функции описанные ниже. Если кратко, то...

Нужно доработать программу
Всем доброго времени суток, имеется программа для расчета среднего арифметического с числами из...

Нужно доработать программу
Нужно сделать так чтобы эта программа выдавала не только те точки которые принадлежат или нет, но и...


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

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

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