2017-04-10 4 views
-1

Ich arbeite an der Implementierung für RC4 zu S3fs mit OpenSSL mit C++. Und ich versuche, eine einfache Textdatei zu verschlüsseln, die die Zeichenfolge enthält:RC4-Implementierung Fehler

Ich bin eine Probe

Ich halte segementation Fehler bekommen, aber ich bin mir nicht sicher, warum. Kann jemand mein Problem beleuchten? Unten ist das Ergebnis und darunter ist der Code.

Datei 1 geöffnet
Datei 2 geöffnet
Segmentation fault (core dumped)

#include<iostream> 
#include "rc4_enc.c" 
#include "rc4_skey.c" 
#include <unistd.h> 
#include <sys/syscall.h> 
#include <errno.h> 
#include "rc4.h" 
#include<fstream> 
#include<string> 
#include<sstream> 
using namespace std; 

int main(){ 
//cout << "I work \n"; // Test for compilation 
ifstream mytext; 
ifstream result; 

// apply string stream 
stringstream foo; 
stringstream baz; 

mytext.open("sample.txt", ios::binary); 
if(!mytext.good()){ 
    cout << "File 1 not opened \n"; 
    return 1; 
} 
else{ 
    cout << "File 1 opened \n"; 
    foo << mytext.rdbuf(); 
} 
result.open("result.txt", ios::binary); 
    if(!result.good()){ 
    cout << "File 2 not opened \n"; 
    return 1; 
    } 
    else{ 
    cout << "File 2 opened \n"; 
    baz << result.rdbuf(); 
    } 
char source[6] = "tacos"; 
//const unsigned char source[] = {'t','a','c','o'}; 
int len = strlen(source); 
RC4_KEY mykey; 
unsigned char * buf; 
foo >> buf; 
RC4_set_key(&mykey,len, buf); // causes segfault? 
// make a second buffer and cast it. 
unsigned char * muf; 
baz >> muf; 
RC4(&mykey, sizeof(mytext),buf,muf); 

    return 0; 

Antwort

1
unsigned char * buf; 

Sie haben diese Variable nicht initialisiert.

+0

Gibt es eine Möglichkeit für mich, auf einen leeren Wert zu initialisieren, so dass er von 'foo >> buf' überschrieben wird? – Callat

+1

Err, 'unsigned char buf [1024];'? oder welche Größe soll es sein? – EJP

+0

Ok ich werde das versuchen. – Callat