Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как сравнить строки? Бобрый день. Подскажите пжалста, как можно сравнить строки без учета регистра (шобы самому не писать функцию перевода в нижний регистр). надо сравнить две строковых переменные без учета регистра: String Sklad.tip; String poisk; // Создаю консольное приложение в визуал студии , интересуют именно сишные методы, а не визуала Заранее всем по "спасибу" :) https://www.cyberforum.ru/ cpp-beginners/ thread1008416.html No operator found which takes a right-hand operand C++
Кто подскажет в чем ошибка? #include <iostream> #include <vector> class LongNumber { public:
C++ Найти количество элементов массива вещественных чисел, дробная часть которых равна 0,5 https://www.cyberforum.ru/ cpp-beginners/ thread1008385.html
Найти количество элементов массива вещественных чисел, дробная часть которых равна 0,5
C++ В чем ошибки ? #include<iostream> using namespace std; int main() { const int n = 10; int mas; int i; https://www.cyberforum.ru/ cpp-beginners/ thread1008378.html
C++ Ошибка в указателе
Необработанное исключение по адресу 0x6F274F98 (msvcr110d.dll) в Динамическая матрица.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFEEEFEE2. вот что выводит когда ввожу матрицы int main() { setlocale(LC_ALL, "Russian"); int N,M,Y,U; cout << "Введите размер первой" << endl; cin >> N >> M; int** p=new int*;
C++ Загвоздка с объявлением переменной Всем доброго времени суток. Недавно начал изучать С++ по Дейтелу. Есть такой пример программы, который прерывает цикл при определенном значении x при помощи break; //Применение break в структуре for #include "stdafx.h" #include <conio.h> #include <iostream> #include <iomanip> using namespace std; int main() { https://www.cyberforum.ru/ cpp-beginners/ thread1008362.html
C++ Иерархия классов https://www.cyberforum.ru/ cpp-beginners/ thread1008353.html
Доброе время суток! есть иерархия классов: #include <iostream> class date { int day; public: data(int day0){ day = day0
Как написать программу на С++, чтобы можно было вводить матрицу с клавы и в итоге она появилась на экране? C++
#include<iostream> using namespace std; int main() { int n,m; cout<< " Vvedite razmer: ""\n"; cin>>n>>m; int *a=new int; cout<< " Zapolnite massiv: ""\n"; for (int i=0; i<n; i++)
C++ Ошибка в функции Не могу исправить ошибки можете помочь, тут в dynamic::dynamic(int n, int m, float l) ошибки: 1.error C2109: для индекса требуется массив или указатель 2.error C2660: dynamic::Create: функция не принимает 2 аргументов #include "dynamic.h" using namespace std; dynamic::dynamic() https://www.cyberforum.ru/ cpp-beginners/ thread1008344.html C++ Задан массив, элементы которого принимают значения 0 или 1. Написать программу поиска наибольшего по длине участка, заполненного единицами. Вывести на https://www.cyberforum.ru/ cpp-beginners/ thread1008339.html
Задан массив, элементы которого принимают значения 0 или 1. Написать программу поиска наибольшего по длине участка, заполненного единицами. Вывести на экран индексы начала и конца найденого участка. #include <iostream> #include <stdio.h> #include <conio.h> #include <math.h> #include <iomanip> using namespace std; void func2 (void);
Распараллеливание вычислений C++
Здравствуйте. Может кто сможет подсказать как мне решить следующую задачу: необходимо распараллелить следующий последовательный код: #include <stdio.h> #include <stdlib.h> #define ISIZE 400 #define JSIZE 400 int main(int argc, char **argv) {
C++ Оптимизация обмена https://www.cyberforum.ru/ cpp-beginners/ thread1008327.html
Дан файл последовательного доступа размером не менее 384 Кбайт, содержащий информацию числового типа. Переписать этот файл в ОП 10 раз поблочно, с использованием алгоритма чтения "от конца файла". Характеристика: размер блока считывания (1-1024 байт).
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
24.11.2013, 15:32 0

Дешифрование - C++ - Ответ 5381225

24.11.2013, 15:32. Показов 1349. Ответов 9
Метки (Все метки)

Ответ

сформулируй из чего может состоять текст и кодовое слово.
да, если символ в тексте и кодовом слове одинаковый - то результатом ^ будет 0;
эту проблемку можно решить думаю если файл открыть бинарно, и в начале файла писать 4 байта uint32_t длинну файла. Либо чтоб множества символов текста и кодового слова не пересекались. (например текст маленькими, кодовое слово большими) (или на 128 смести вперёд кодовое слово)

Добавлено через 4 часа 9 минут
Писал писал.. что не получается даже кодировать файл по нормальному
вот что есть (неправильно!):
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#include <iostream>
#include <cstdint>
#include <fstream>
#include <string>
 
 
using namespace std;
 
bool IsValid(uint8_t _char);
bool IsValidFile(uint8_t* file, int filesize, uint8_t* key, int key_size);
bool IsValidKeyUnit(uint8_t* file, int filesize, uint8_t* key, int key_size, int key_unit);
 
void Print(uint8_t* file, int filesize, uint8_t* key, int key_size);
 
int main(){
 
    fstream input_file;
    fstream output_file;
    uint8_t char_buff;
    string vibor;
    string filename;
    
 
    string to_do_option;
    cout<<"encode/decode: ";
    cin>>to_do_option;
 
    string input_key;
    if (to_do_option == "encode"){
        
        cout<<"choose input file: ";
        cin>>filename;
        input_file.open(filename.c_str(), fstream::in);
        if(!input_file) cout<<"error open input file\n";
        
        cout<<"choose output file: ";
        filename = "";
        cin>>filename;
        output_file.open(filename.c_str(), fstream::out|fstream::trunc);
        if(!output_file) cout<<"error open output file\n";
        
        cout<<"input key for coding: ";
        cin>>input_key;
        
        
        int key_index = 0;
        
        while (input_file.good()){
            char_buff = input_file.get();
            if (!IsValid(char_buff)) continue;
            char_buff ^= input_key[key_index];
            output_file<<(char)(char_buff);
            key_index++;
            if (key_index >= input_key.size()) key_index = 0;
        }
        cout<<"encoding completed\n";
    }
 
    if (to_do_option == "decode"){
 
        cout<<"choose input file: ";
        cin>>filename;
        input_file.open(filename.c_str(), fstream::in);
        if(!input_file) cout<<"error open input file\n";
 
        string in;
        while (input_file.good()){
            char_buff = input_file.get();
            in += char_buff;
        }
 
        
        int file_size = in.size();
        uint8_t* Memory_file = new uint8_t[in.size()];
        for (int i = 0; i < in.size(); i++) Memory_file[i] = in[i];
        
        for (int key_size = 1; key_size < 10; key_size++){
            cout<<"Key sise to try: "<<key_size<<endl;
 
            uint8_t* key = new uint8_t[key_size]; 
            bool is_valid_key = 0;
            
            for (int i = 0; i<key_size; i++) key[i] = 0;
            
    _continue:
            
            bool is_est_chto_dvigat_flag = 0;
            bool is_max_key_flag = 0;
            int key_index = 0;
 
            while (!is_max_key_flag){
                is_est_chto_dvigat_flag = 0;
                //Двигаем по очереди разряды вверх
                if (!IsValidKeyUnit(Memory_file, file_size, key, key_size, key_index)){
                    if (key[key_index] < 255) key[key_index]++;
                    is_est_chto_dvigat_flag = 1;
                }
    
                key_index++;
                if (key_index >= key_size) key_index = 0;
                
                //Проверяем не дошли ли до максимума
                is_max_key_flag = 1;
                for (int i = 0; i<key_size; ++i){
                    if (key[i] < 255){
                        is_max_key_flag = 0;
                        break;
                    }
                }
 
                //Проверяем не получился ли файл
                if (IsValidFile(Memory_file, file_size, key, key_size)){
                    Print(Memory_file, file_size, key, key_size);
                    cout<<"Prodolzit perebor? (1/0) ";
                    cin>>vibor;
                    if (vibor == "1") {
                        //Продолжаем перебор... както????????
                        //НЕВЕРНЫЙ ПОДХОД
                    
                            
                        goto _continue;
                    }
                }
            }
            
            
 
            delete key;
 
            cout<<"Perebor key razmerom "<<key_size<<" okonchen\n";
 
 
        }
 
    }
            
    cout<<"input anithing to end: ";
    cin>>vibor;
 
    return 0;
}
 
 
bool inline IsValid(uint8_t _char){
 
    if ((_char >= 32)&&(_char <= 126)) return 1;
    if (_char == 13) return 1; //<CR> конец строки
    if (_char == 10) return 1; //<LF>
    if (_char == 9) return 1; //<TAB> табуляция
    return 0;
}
 
bool IsValidFile(uint8_t* file, int filesize, uint8_t* key, int key_size){
 
    int key_index = 0;
    for (int file_index = 0; file_index < filesize-1; ++file_index){
        if (!IsValid(file[file_index]^key[key_index])) return 0;
        key_index++;
        if (key_index >= key_size) key_index = 0;
    }
    return 1;
}
bool IsValidKeyUnit(uint8_t* file, int filesize, uint8_t* key, int key_size, int key_unit){
        
    for (int file_index = key_unit; file_index < filesize-1; file_index+=key_size){
        if (!IsValid(file[file_index]^key[key_unit])) return 0;
    }
    return 1;
}
 
 
 
 
void Print(uint8_t* file, int filesize, uint8_t* key, int key_size){
 
    cout<<"Key: ";
    for (int i = 0; i<key_size; i++) cout<<key[i];
    
    cout<<"\nEncripted file:n";
    int key_index = 0;
    for (int file_index = 0; file_index < filesize; ++file_index){
        cout<<(char)(file[file_index]^key[key_index]);
        key_index++;
        if (key_index >= key_size) key_index = 0;
    }
    cout<<"\n-------------------------------------\n";
}
Но я понял зато как надо верно его расшифровывать.
1. Допустим ключь размером N (к примеру 10)
2. Для каждого элемента ключа определяются возможные значения
3. Как то перебираем все комбинации этих возможных значений (рекурсия, но я не программист и это для меня сложно )

Вернуться к обсуждению:
Дешифрование C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2013, 15:32
Готовые ответы и решения:

Шифрование и дешифрование на Cи
не получается зашифровать текст и получить буквы из кода. Попалась вот такая задача: Составить...

Шифрование и дешифрование
Помогите написать программу, которая будет шифровать и дешифровать матррицу.

Шифрование. Дешифрование по N
Задание: Зашифровать строку таким методом. При N =4 страуструп стра устру п артс уруст п ...

Шифрование/Дешифрование
Не получается выполнить последний пункт на Дешифровании(после замены) превратить цифры с буквы....

9
24.11.2013, 15:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2013, 15:32
Помогаю со студенческими работами здесь

Шифрование и дешифрование файла
4. Реализовать в программе шифрование и дешифрацию файла с использованием квадрата Полибия,...

XOR шифрование/дешифрование
Всем привет. Пож-ста помогите написать программу, шифрующую/дешифрующую xor маску. 2 Примера...

Шифрование. Дешифрование по N. И по коду
Написать программу по шифрованию, дешифрованию. Можно их выделить в функции. Сам пример шифрования....

Шифрование и дешифрование текста
Народ вот програма для шифрования текста мне нужно переделать так штоб били подпрограми: 1) на...

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