XOR^Operator Buchstaben verschlüsseln

carlos1976

Grünschnabel
Hallo!

Folgendes Programm, soll die beiden Strings: Text + Key, Buchstabenweise zusammen verknüpfen.
Das funktioniert soweit, ich verstehe nur nicht, wie ich ich da die XOR Operation integrieren soll, bzw. wie das gemeint ist..

(Aufgabenbeschreibung)
Wandle jedes Zeichen text[i] mit Hilfe einer bitweisen, exklusiven Oder-Operation (^in
C++) um, bei der das Zeichen text[i] verknüpft wird mit dem Passwort-Zeichen key[i].
Falls i die Länge von key überschreitet, dann wird zyklisch der Anfang von key
durchlaufen.

Eingabe:
Zu verschlüsselnde Zeichenkette text, Passwort key

Ausgabe:
Verschlüsselte Zeichenkette result.

Implementieren Sie den Algorithmus in einer seperaten Funktion string encrypt (string text, string key) und verschlüsseln Sie die vorgegebene Zeichenkette text mit Hilfe des vorgegebenen Passwortes key.

Könnt Ihr mir bei der bitweisen, exklusiven Oder-Operation helfen? Thx für Eure Hilfe!



Code:
#include <iostream>
#include <string>

using namespace std;

string encrypt(string text, string key)
   {
  		
   string result;
   
   int k = 0;
   
   for ( int i= 0; i< text.length();i++){
   
   result = result +  text[i] + key[k];  
   
   k++; 
   
   if (key.length()==k)
   k = 0;
  
   } 
  return result; 
}

int main(int argc, char* argv[])
{
	string text = "abcdefg.";
	string key  =  "hijkl";
	
	cout << "Die verschluesselte Zeichenkette lautet: " << encrypt(text,key);
	
	return 0;
}
 
Du hast im Prinzip die Aufgabe fast gelöst. Du sollst ja text[i] und key[i] mit XOR verknüpfen. Du tust sie momentan aber konkatenieren. Du musst lediglich folgende Zeile ändern.

(Wie immer ohne Garantie, ich programmiere kein c++ ;-))
Code:
result = result +  text[i] + key[k];
Code:
result = result +  (char)(text[i] ^ key[k]);
 
Zurück