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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
blackbanny
129 / 116 / 2
Регистрация: 14.11.2010
Сообщений: 707
#1

шифрование RC4 - C++

15.05.2012, 20:51. Просмотров 2955. Ответов 2
Метки нет (Все метки)

Делаю шифрование RC4, но почему то дешифрует неправильно, не могли бы подсказать почему?

.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
#pragma once;
class RC4 {
 
public:
    RC4();
    void prepare_key(char *key_data_ptr, int key_data_len);
    char* rc41(char *buffer_ptr, int buffer_len);
    char* readFile();
    int length;
private:    
        char mState[256];       
        int mX;        
        int mY;
        string message;
        char* mes;
    void swap_byte(char *a, char *b);
};
.cpp:
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
#include "rc4.h"
 
RC4::RC4() {
    mX = 0;
    mY = 0;
    mes = "";
}
 
char* RC4::readFile() {
    char line[1024];
    ifstream F("message.txt");
    if (!F) {
        return new char;
    } else {
        int i = 0;
        while (F.getline(line, sizeof(line))) {
            message = message + line + "\n"; 
        }
    }
}
 
void RC4::prepare_key(char *key_data_ptr, int key_data_len)
{         
     for(int counter = 0; counter < 256; counter++) {
        mState[counter] = (char)counter;
     }
     
     
     int j = 0;
     for(int i = 0; i < 256; i++) {         
        j = (j + (int)mState[i] + key_data_ptr[i % key_data_len]) %256;
        swap_byte(&mState[i], &mState[j]);
     }       
 }
 
char* RC4::rc41(char *buffer_ptr, int buffer_len)
 {      
     char xorIndex;
     char* cipher = new char[buffer_len];
     for (int m = 0; m < buffer_len; m++) {
         mX = (mX + 1) % 256;
         mY = (mY + mState[mX]) % 256;
         swap_byte(&mState[mX], &mState[mY]); 
         xorIndex = mState[(mState[mX] + mState[mY]) % 256];
         cipher[m] = buffer_ptr[m] ^ xorIndex;
     }
     return cipher;
 }
 
void RC4::swap_byte(char *a, char *b)
 {
     unsigned char swapByte; 
     
     swapByte = *a; 
     *a = *b;      
     *b = swapByte;
 }
создаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
key = new char[3];
                key[0] = 'k';
                key[1] = 'e';
                key[2] = 'y';
                char* qwe = "AA";
                rc4 = new RC4();
                rc42 = new RC4();
                
                rc4->prepare_key(key, 3);
                encryptedMessage = rc4->rc41(qwe, 2);
                cout << encryptedMessage << "\n";
 
                rc42->prepare_key(key, 3);
                decryptedMessage = rc42->rc41(encryptedMessage, 2);
                cout << decryptedMessage;
Добавлено через 2 часа 18 минут
подскажите что не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2012, 20:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос шифрование RC4 (C++):

RC4 на С++ - C++
Здравствуйте. Мне нужна реализация потокового шифра RC4 на С++, может есть у кого-нибудь реализация, т.е. работающая программа вместе с...

RC4 и Base64 - C++
Доброго времени суток, вопрос собственно в следующем. Обязательно ли использовать Base64, когда используешь RC4??? И Если используешь, то...

RC4 увеличение файла при шифровании - C++
реализую шифрование текстового файла шифром RC4 расшифровка - просто применение алгоритма же к шифрованному тексту. но исходный я не...

Алгоритмы шифрования RC4, DES, RSA - C++
подкиньте плиз алгоритмы RSA, DES, RC4. Желательно с пояснениями, т.к. в СИ пока новичок :scratch: Программка необходима как приложение к...

Шифр Rc4 как ввести вводные данные - C++
#include &lt;iostream&gt; #include &lt;tchar.h&gt; #include &lt;fstream&gt; using namespace std; class RC4 { char K; char S; ...

Алгоритм шифрования RC4 не совсем корректно работает - C++
Всем привет! Знаю что тема избитая, но всё таки хочется понять проблему и решить. Алгоритм разобрал и написал. Спасибо википедии. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
13.10.2012, 15:11 #2
у меня вопрос? а каким образом создаешь основной проект?
blackbanny
129 / 116 / 2
Регистрация: 14.11.2010
Сообщений: 707
15.10.2012, 15:25  [ТС] #3
Цитата Сообщение от White Luna Посмотреть сообщение
у меня вопрос? а каким образом создаешь основной проект?
вопрос уже закрыт
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2012, 15:25
Привет! Вот еще темы с ответами:

Шифрование - C++
Создать выходной зашифрованный файл на основе входного. Шифрование файла выполняется по следующему правилу: в каждом слове строки первый...

Шифрование - C++
Собственно, вопрос не совсем по си++, но нашел это место оптимальным. Так вот, речь пойдет о шифровании. А точнее: стоит ли уповать на...

Шифрование - C++
Привет всем:) особенно тем кто в этот день тратит свое время на программирование:) Помогите решить такую задачу. Есть целое число &quot;1234&quot;....

шифрование - C++
помогите пожалуйста написать пргорамму!!! была бы очень благодрна!!! шифрование. один из методов шифрования называется...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru