<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[gelöst] Aufgabe zur XOR-Verschlüsselung]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich bräuchte mal eine Rückmeldung zu meiner Lösung der folgenden Aufgbenstellung. Gegeben war ein Programmgerüst, das erweitert werden sollte, um die folgende Aufgabe zu erfüllen:</p>
<p>Eingabe: Zu verschlüsselnde Zeichenkette <em>text</em>, Passwort <em>key</em><br />
Ausgabe: Verschlüsselte Zeichenkette <em>result</em><br />
Idee für Algorithmus: Wandle jedes Zeichen <em>text[i]</em> mit Hilfe einer bitweisen, exklusiven Oder-Operation (^in C++) um, bei der das Zeichen <em>text[i]</em> verknüpft wird mit dem Passwort-Zeichen <em>key[i]</em>. Falls <em>i</em> die Länge von <em>key</em> überschreitet, dann wird zyklisch der Anfang von <em>key</em> durchlaufen.</p>
<p>Meine Lösung sieht nun folgendermaßen aus.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

string encrypt(string text, string key)
{
	string result;

	// Anfang meiner Loesung

	unsigned int x = 0;
	result = text;

	for (unsigned int i = 0; i &lt; text.length(); i++)
	{
		result[i] = text[i] ^ key[x];
		if(x == key.length())
		{
			x = 0;
		}
		x++;
	}

	cout &lt;&lt; result &lt;&lt; endl;

	// Ende meiner Loesung

	return result;
}

int main(int argc, char* argv[])
{
	string text = &quot;Dies ist irgendein Text.&quot;;
	string key  =  &quot;irgendein Passwort&quot;;

	// Anfang meiner Loesung

	encrypt(text, key);

	// Ende meiner Loesung

	return 0;
}
</code></pre>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox52925" checked="true" /><label for="checkbox52925">genommen, da ich nicht genau wusste, wie ich das mit i realisieren sollte - kann mir da wer helfen? Ich weiß nicht, ob mich das großartig Punkte kostet, aber ich würde gerne wissen, wie man das mit einer Variable realisiert und ob die Lösung so generell annehmbar ist.</label></div></p>
<p>Vielen Dank und noch einen schönen Tag,<br />
Zateha</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295698/gelöst-aufgabe-zur-xor-verschlüsselung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 08:02:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295698.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Nov 2011 13:38:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] Aufgabe zur XOR-Verschlüsselung on Sat, 19 Nov 2011 18:51:59 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich bräuchte mal eine Rückmeldung zu meiner Lösung der folgenden Aufgbenstellung. Gegeben war ein Programmgerüst, das erweitert werden sollte, um die folgende Aufgabe zu erfüllen:</p>
<p>Eingabe: Zu verschlüsselnde Zeichenkette <em>text</em>, Passwort <em>key</em><br />
Ausgabe: Verschlüsselte Zeichenkette <em>result</em><br />
Idee für Algorithmus: Wandle jedes Zeichen <em>text[i]</em> mit Hilfe einer bitweisen, exklusiven Oder-Operation (^in C++) um, bei der das Zeichen <em>text[i]</em> verknüpft wird mit dem Passwort-Zeichen <em>key[i]</em>. Falls <em>i</em> die Länge von <em>key</em> überschreitet, dann wird zyklisch der Anfang von <em>key</em> durchlaufen.</p>
<p>Meine Lösung sieht nun folgendermaßen aus.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

string encrypt(string text, string key)
{
	string result;

	// Anfang meiner Loesung

	unsigned int x = 0;
	result = text;

	for (unsigned int i = 0; i &lt; text.length(); i++)
	{
		result[i] = text[i] ^ key[x];
		if(x == key.length())
		{
			x = 0;
		}
		x++;
	}

	cout &lt;&lt; result &lt;&lt; endl;

	// Ende meiner Loesung

	return result;
}

int main(int argc, char* argv[])
{
	string text = &quot;Dies ist irgendein Text.&quot;;
	string key  =  &quot;irgendein Passwort&quot;;

	// Anfang meiner Loesung

	encrypt(text, key);

	// Ende meiner Loesung

	return 0;
}
</code></pre>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox52925" checked="true" /><label for="checkbox52925">genommen, da ich nicht genau wusste, wie ich das mit i realisieren sollte - kann mir da wer helfen? Ich weiß nicht, ob mich das großartig Punkte kostet, aber ich würde gerne wissen, wie man das mit einer Variable realisiert und ob die Lösung so generell annehmbar ist.</label></div></p>
<p>Vielen Dank und noch einen schönen Tag,<br />
Zateha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146330</guid><dc:creator><![CDATA[Zateha]]></dc:creator><pubDate>Sat, 19 Nov 2011 18:51:59 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Aufgabe zur XOR-Verschlüsselung on Sat, 19 Nov 2011 13:56:56 GMT]]></title><description><![CDATA[<p>- Du solltest Strings lieber per (const) Referenz übergeben, aber das habt ihr vielleicht noch nicht gemacht.<br />
- Es geht auch nur mit i: text[i] ^ key[i % key.length()]; (Stichwort: Modulo)<br />
- Die Ausgabe macht man möglicherweise nicht in der Funktion, sondern außerhalb. So z.B.:</p>
<pre><code class="language-cpp">std::cout &lt;&lt; encrypt(.., ..);
</code></pre>
<p>Allerdings macht eine solche Ausgabe hier eh keinen Sinn, du weißt doch gar nicht, ob da wieder Text raus kommt. (Und höchstwahrscheinlich steht da dann nur Kauderwelsch.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146332</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 19 Nov 2011 13:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Aufgabe zur XOR-Verschlüsselung on Sat, 19 Nov 2011 14:09:12 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Allerdings macht eine solche Ausgabe hier eh keinen Sinn, du weißt doch gar nicht, ob da wieder Text raus kommt. (Und höchstwahrscheinlich steht da dann nur Kauderwelsch.)</p>
</blockquote>
<p>Zum Testen kann man ja Leerzeichen als key nehmen. Oder &quot; !&quot;, das wechselt (hoffe ich) die Groß-Kleinschrift und verändert jeden fünften Buchstaben zu seinem Buddy-Nachbarn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146335</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 19 Nov 2011 14:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Aufgabe zur XOR-Verschlüsselung on Sat, 19 Nov 2011 14:17:37 GMT]]></title><description><![CDATA[<p>x++ muss vor das if</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146338</guid><dc:creator><![CDATA[IvemadeAfew]]></dc:creator><pubDate>Sat, 19 Nov 2011 14:17:37 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Aufgabe zur XOR-Verschlüsselung on Sat, 19 Nov 2011 18:51:40 GMT]]></title><description><![CDATA[<p>Vielen Dank für alle Antworten, vor allem für den Tipp mit Modulo.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146432</guid><dc:creator><![CDATA[Zateha]]></dc:creator><pubDate>Sat, 19 Nov 2011 18:51:40 GMT</pubDate></item></channel></rss>