Verschlüsselung mit XOR



  • Hallo!

    Ich soll eine Blockweise Verschlüsselung mit dem XOR machen.
    Mein Problem ist, dass wenn ich einen String mit n-Zeichen eingebe, ihn codiere, immer eine Folge Nullen mit der Länge n rauskommt.
    Ich weis nicht wo der verfluchte Fehler liegt!

    Das ist die Funktion, die aufgerufen wird, sobald ich den Button drücke:

    void CBlocksatzcodierungDlg::OnOK()  
    { 
        CString Eingabe; 
        CString Codewort; 
        unsigned int laenge_eingabe; 
        unsigned int laenge_codewort; 
    	unsigned int i;
    	unsigned int b;
    	char c_temp1;
    	char c_temp2;
    	int int_temp1;
    	int int_temp2;
    
        UpdateData(true); 
        GetDlgItem(IDC_Eingabe)->GetWindowText(Eingabe); 
        GetDlgItem(IDC_Codewort)->GetWindowText(Codewort); 
        laenge_eingabe = Eingabe.GetLength(); 
        laenge_codewort = Codewort.GetLength(); 
    
    	int *Wertearray_eingabe = new int[laenge_eingabe];
    
    	b=0;
        for(i = 0; i < laenge_eingabe; i++) 
        {
    		c_temp1 = Eingabe.GetAt(i);
    		c_temp2 = Codewort.GetAt(b);
    
    		int_temp1 = atoi(&c_temp1);
    		int_temp2 = atoi(&c_temp2);
    
    		// Hier kommt die XOR-Verknüpfung
    		Wertearray_eingabe[i] = (int_temp1^int_temp2);
    
    		if(b == laenge_codewort-1)
    			b=0;
    		else
    			b++;
    	}
    
    	char *ausgabe = new char[laenge_eingabe+1];
    
    	// Mit dem Loop will ich die Int's in Char's umwandeln
    	for(i=0 ; i<laenge_eingabe ; i++)
    	_itoa(Wertearray_eingabe[i],&ausgabe[i],10);
    
    	ausgabe[laenge_eingabe+1] = '\0';
    
        GetDlgItem(IDC_Ausgabe)->SetWindowText(ausgabe); 
    }
    


  • Ich würde im letzten teil mal probieren statt mit _itoa
    eine CString Variable als temporär zu definieren

    z.B.
    CString tmp;

    Und dann mit dem Format Operator zu arbeiten

    z.B.

    for(i=0 ; i<laenge_eingabe ; i++)
    {
    tmp = tmp + tmp.Format("%d",ausgabe[i]);
    }



  • Ooops Sorry,

    ich meine natürlich:

    for(i=0 ; i<laenge_eingabe ; i++)
    {
    tmp = tmp + tmp.Format("%c",ausgabe[i]);
    }



  • Ich habs schon hinbekommen. Topic kann zu


Anmelden zum Antworten