<?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[suche Verschlüsselung nicht so simpel wie xor]]></title><description><![CDATA[<p>Also ich bin auf der suche nach einer Klasse [mir ist nicht eingefallen wie ich sowas selber machen kann]<br />
mit der ich strings ver und entschlüsseln kann [mit einem passwort]</p>
<p>hat jemand sowas, bzw. weiß wo man sowas kriegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148433/suche-verschlüsselung-nicht-so-simpel-wie-xor</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 20:47:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148433.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 May 2006 16:12:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Fri, 26 May 2006 16:12:40 GMT]]></title><description><![CDATA[<p>Also ich bin auf der suche nach einer Klasse [mir ist nicht eingefallen wie ich sowas selber machen kann]<br />
mit der ich strings ver und entschlüsseln kann [mit einem passwort]</p>
<p>hat jemand sowas, bzw. weiß wo man sowas kriegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065641</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Fri, 26 May 2006 16:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Fri, 26 May 2006 16:25:44 GMT]]></title><description><![CDATA[<p>Schau mal hier:<br />
<a href="http://www.schneier.com/blowfish.html" rel="nofollow">http://www.schneier.com/blowfish.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065649</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 26 May 2006 16:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Fri, 26 May 2006 16:45:35 GMT]]></title><description><![CDATA[<p>XOR ist doch eigentlich recht gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065658</guid><dc:creator><![CDATA[LangesPasswort]]></dc:creator><pubDate>Fri, 26 May 2006 16:45:35 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Fri, 26 May 2006 17:22:35 GMT]]></title><description><![CDATA[<p>Evtl. auch Tiny Encryption Algorithm?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065688</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 26 May 2006 17:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Fri, 26 May 2006 17:27:08 GMT]]></title><description><![CDATA[<p>download123 schrieb:</p>
<blockquote>
<p>Also ich bin auf der suche nach einer Klasse [mir ist nicht eingefallen wie ich sowas selber machen kann]<br />
mit der ich strings ver und entschlüsseln kann [mit einem passwort]<br />
hat jemand sowas, bzw. weiß wo man sowas kriegt?</p>
</blockquote>
<p>Falls nur eine schnell einzubindende und einfache Möglichkeit gewünscht ist, würde ich eine Stromchiffrierung (z.B. RC4) nutzen. Sehr einfach zu implementieren und bietet den Vorteil gegnüber Blockalgorithmen, dass die Eingabedatenlänge nicht ein vielfaches der Blckgröße sein muss.</p>
<p>LangesPasswort schrieb:</p>
<blockquote>
<p>XOR ist doch eigentlich recht gut.</p>
</blockquote>
<p>Ist keine Verschlüsselung. Lediglich eine Bytemanipulation einfachster Art. Bietet null Sicherheit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065693</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Fri, 26 May 2006 17:27:08 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 00:31:00 GMT]]></title><description><![CDATA[<p>zu RC 4 habe ich leider nicht wirklich was gefunden<br />
[was warscheinlich an meiner art zu googeln liegt]</p>
<p>zu TAE habe ich ein beispiel gefunden,<br />
allerdings kann ich nicht nachvolzihen wo ich meinen text eingeben kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
<p><a href="http://www.kuno-kohn.de/crypto/algo/tea.htm" rel="nofollow">http://www.kuno-kohn.de/crypto/algo/tea.htm</a></p>
<pre><code>#define DELTA        0x9e3779b9
#define ROUNDS       32
#define LOG_ROUNDS    5
/* ... */
unsigned long key[4], y, z, sum = 0;
int i;
/* key   - Schlüssel (128 Bit)
 * y, z  - 32-Bit-Blöcke
 * sum   - Variable für DELTA
 * ...
 * Verschlüsselung
 */
for (i = 0; i &lt; ROUNDS; i++)
{
  sum += DELTA;
  y += (z &lt;&lt; 4) + key[0] ^ z + sum ^ (z &gt;&gt; 5) + key[1];
  z += (y &lt;&lt; 4) + key[2] ^ y + sum ^ (y &gt;&gt; 5) + key[3];
}
/* ...
 * Entschlüsselung
 */
sum = DELTA &lt;&lt; LOG_ROUNDS;
for (i = 0; i &lt; ROUNDS; i++)
{
  z -= (y &lt;&lt; 4) + key[2] ^ y + sum ^ (y &gt;&gt; 5) + key[3];
  y -= (z &lt;&lt; 4) + key[0] ^ z + sum ^ (z &gt;&gt; 5) + key[1];
  sum -= DELTA;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1065864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065864</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 27 May 2006 00:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 09:03:21 GMT]]></title><description><![CDATA[<p>Schau mal auf der englischen Wikipedia-Seite...</p>
<p><a href="http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm" rel="nofollow">http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm</a></p>
<p>Dort ist sogar ein Implementierung zu finden. Vlt. findest du zu den anderen Verfahren auch Einträge dort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065934</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 27 May 2006 09:03:21 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 09:07:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Der eingehende 64-Bit-Block wird in zwei Hälften, nennen wir sie y und z, aufgeteilt.</p>
</blockquote>
<p>Oder auf Deutsch: y und z sind deine zu codierenden Daten, die kannst du z.B. so aus einem String herausfiltern:</p>
<pre><code class="language-cpp">while(str.length()%(2*sizeof(long))!=0) str.pusch_back('\0');//auf Blockqröße bringen

unsigned long* lstr = reinterpret_cast&lt;unsigned long*&gt; str.data();

for(int i=0;i&lt;str.data/sizeof(long);i+=2)
{
  //verschlüssle lstr[i] und lstr[i+1]
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1065936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065936</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 27 May 2006 09:07:08 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 09:14:39 GMT]]></title><description><![CDATA[<p>Und warum nicht Blowfish? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065942</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sat, 27 May 2006 09:14:39 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 09:34:52 GMT]]></title><description><![CDATA[<p>download123 schrieb:</p>
<blockquote>
<p>zu RC 4 habe ich leider nicht wirklich was gefunden<br />
[was warscheinlich an meiner art zu googeln liegt]</p>
</blockquote>
<p>RC4 ist eine Stromchiffrierung mit variabler Schlüssellänge (bietet u.a. Vorteile) bis zu imho 2048 Bit. Wird unter anderem in &quot;älteren&quot; SSL Protokoll-Implementationen genutzt. Der IE (128 BIt) nutzt es. Diverse FTP Programme usw...<br />
Implementationen gibt es imho zu Hauf im Netz daher verweise ich jetzt mal z.B. mal <a href="ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/rc4/rc4.c" rel="nofollow">hierher</a> (ohne Gewähr).</p>
<p>Mit sogenannten Testvektoren könntest Du die Korrektheit der Implemenation überprüfen.</p>
<p>Artchi schrieb:</p>
<blockquote>
<p>Und warum nicht Blowfish? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>...oder den AES würde ich dann bei Blockalgorithmen empfehlen. Wofür benötigst du denn Kryptografie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065953</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Sat, 27 May 2006 09:34:52 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 13:27:38 GMT]]></title><description><![CDATA[<p>warum nicht Blowfish ....<br />
weil ich keine ahnung davon habe, und Blowfish sah noch komplizierter aus;<br />
wenn ich mich da jedoch getäuscht haben sollte [ist eigentlich egal wie schwer oder einfach es ist ... wenn ich einfach meinen string reingeben kann und einfach was rauskommen, was man auch wieder zurückverwandeln kann] also wenn ich mich täuschen sollte sagt bescheid</p>
<p>eine frage noch zum wikipedia code<br />
wie müssen die beiden unsigent long's befüllt werde, wie kriege ich meinen string da verarbeitet, muss ich das Zeichenweise machen? jeden buchstaben in seinen ansi code zerlegen oder wie`?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066082</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 27 May 2006 13:27:38 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 13:31:09 GMT]]></title><description><![CDATA[<p>Am einfachsten kannst du jeweils vier char-Werte (per Bit-Shift und Oder-Kombination) zu einem long-Wert zusammenfassen (am Ende mit \0 auffüllen). Oder noch einfacher: Du nimmst dir ein char-Array und deutest es per reinterpret_cast&lt;&gt; als long um (siehe mein Code-Beispiel unten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066087</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 27 May 2006 13:31:09 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 13:37:44 GMT]]></title><description><![CDATA[<p>HaJo. schrieb:</p>
<blockquote>
<p>LangesPasswort schrieb:</p>
<blockquote>
<p>XOR ist doch eigentlich recht gut.</p>
</blockquote>
<p>Ist keine Verschlüsselung. Lediglich eine Bytemanipulation einfachster Art. Bietet null Sicherheit.</p>
</blockquote>
<p>Ja und? Alles andere sind auch nur Bytemanipulationen. Wir arbeiten schließlich auf Digitalrechnern. Wenn die Schlüssellänge gleich der Textlänge ist, dann ist xor ein sehr sicheres Verfahren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066089</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Sat, 27 May 2006 13:37:44 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 14:02:18 GMT]]></title><description><![CDATA[<p>xor ist gut, schön simpel aber wann ist schon mal der key genauso lange wie der text.. /edit ich will mit der verschlüsselung ein bischen mit irc spielen [ja ich weiß ich will keinen standart benutzen] ... dazu dürfte vieleicht sogar xor gehen ...irc nachrichten sind ja nicht so lang naja aber weiß nicht /ende edit</p>
<p>sorry, vieleicht bin ich einfach nur zu blöd aber ich raf nicht wie ich meinen string jetzt verschlüsselt kriege <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> der code von vorher geht nicht [string has no member named push_back ...]</p>
<p>Danke schon mal für eure bemühungen</p>
<p>[leider hilft googel zu diesem Thema auch nicht wirklich weiter]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066096</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 27 May 2006 14:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 14:08:06 GMT]]></title><description><![CDATA[<p>Jester schrieb:</p>
<blockquote>
<p>Ja und? Alles andere sind auch nur Bytemanipulationen. Wir arbeiten schließlich auf Digitalrechnern. Wenn die Schlüssellänge gleich der Textlänge ist, dann ist xor ein sehr sicheres Verfahren.</p>
</blockquote>
<p>Gut, mit der Bytemanipulation ist an sich vollkommen korrekt. Ich wollte damit aber nur ausdrücken, dass XOR &quot;Verschlüsselungen&quot;, wie sie fälschlicherweise genannt werden, wirklich null Sicherheit bieten. Bei Schlüssellängen, solang wie der Klartext, was an sich ja schon unglaubliche Probleme in der Praxis darstellt und somit keine Anwendung findet, macht es auch noch nicht so sehr sicher. Abhilfe würde ein OTP schaffen.</p>
<p>download123 schrieb:</p>
<blockquote>
<p>sorry, vieleicht bin ich einfach nur zu blöd aber ich raf nicht wie ich meinen string jetzt verschlüsselt kriege <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /> der code von vorher geht nicht [string has no member named push_back ...]<br />
Danke schon mal für eure bemühungen<br />
[leider hilft googel zu diesem Thema auch nicht wirklich weiter]</p>
</blockquote>
<p>Hmm, gib doch einmal falls möglich mehr Informationen preis. Einsatz, Zweck, etc... Ansonsten habe ich doch schon auf RC4 (mit Link) verwiesen oder gab es dabei Probleme?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066102</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Sat, 27 May 2006 14:08:06 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 14:16:37 GMT]]></title><description><![CDATA[<p>HaJo ...</p>
<p>ja diverse... allein schon beim compilieren</p>
<pre><code class="language-cpp">main.cpp:76: error: `exit' undeclared (first use this function)
main.cpp:76: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:78: error: `strcpy' undeclared (first use this function)
main.cpp:79: error: `strlen' undeclared (first use this function)
main.cpp:82: error: `strcat' undeclared (first use this function)
main.cpp:95: error: invalid conversion from `char*' to `unsigned char*'
main.cpp:95: error:   initializing argument 1 of `void prepare_key(unsigned char*, int, rc4_key*)'
main.cpp:99: error: invalid conversion from `char*' to `unsigned char*'
main.cpp:99: error:   initializing argument 1 of `void rc4(unsigned char*, int, rc4_key*)'
</code></pre>
<p>Außerdem verstehe ich den code nicht ansatzweise</p>
<p>ich will mit der verschlüsselung ein bischen mit irc spielen</p>
<p>allso nachrichten vor dem senden verschlüsseln</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066106</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 27 May 2006 14:16:37 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 14:40:30 GMT]]></title><description><![CDATA[<p>download123 schrieb:</p>
<blockquote>
<p>Außerdem verstehe ich den code nicht ansatzweise<br />
ich will mit der verschlüsselung ein bischen mit irc spielen<br />
allso nachrichten vor dem senden verschlüsseln</p>
</blockquote>
<p>Hmm, gut. Ich versuch dann erstmal den RC4 Algorithmus zu erläutern. Btw: C/C++ Erfahrungen hast du aber, oder?</p>
<p>RC4:<br />
- ein ursprünglich geheimer Algorithmus<br />
- entwickelt von Ron Rivest (<strong>R</strong>on's <strong>C</strong>ode) für RSA Data Security<br />
- variable Schlüssellänge (also von 1 Zeichen bis 256 Zeichen)<br />
- arbeitet mit S-Boxen. (Üblich bei Verschlüsselungsalgorithmen. Arrays in denen die Permutationen bearbeiten werden)<br />
- S-Box~0 - 255~</p>
<p>Initialisierung der S-Boxen:<br />
1.) Linear füllen S<sub>0</sub> mit 0 bis S<sub>255</sub> mit 255<br />
2.) Schlüsselarray der Größe 256 (K<sub>0</sub> bis K<sub>255</sub>) anlegen und mit dem Schlüssel füllen. Falls Schlüssel kürzer als 256 Bytes, dann immer wieder wiederholen<br />
3.) Dann folgt eine Permutation von S-Box und &quot;K-Box&quot;</p>
<pre><code>i = 0, j = 0

Für i = 0 bis 255
    j = (j + S[t]i[/t] + K[t]j[/t]) MOD 256
    vertausche S[t]i[/t] und [t]j[/t]
</code></pre>
<p>Eigentliche Verschlüsselung läuft in 2 Schritten ab:<br />
1.) Zufallsbyte erzeugen</p>
<pre><code>i = (i + j) MOD 256
j = (j + S[t]i[/t]) MOD 256
vertausche S[t]i[/t] und S[t]j[/t]
t = (S[t]i[/t] + S[t]j[/t]) MOD 256
Z = S[t]t[/t]
</code></pre>
<p>2.) XOR Verknüpfung mit Klartext-/Chiffretextbyte</p>
<pre><code>Z ist das Zufallsbyte aus 1.)
K ist das Klartext-/Chiffretextbyte
B = Z XOR K
</code></pre>
<p>Soviel zum Algorithmus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066123</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Sat, 27 May 2006 14:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 15:22:58 GMT]]></title><description><![CDATA[<p>und schon siehts garnicht mehr so schwer aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /><br />
um auf das beispiel zurück zu kommen<br />
<a href="ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/rc4/rc4.c" rel="nofollow">ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/rc4/rc4.c</a></p>
<p>damit ich den ablauf verstanden habe</p>
<p>mit der prepare_key funktion wird ein struct rc4_key erstellt bzw. gefüllt [state[256] von 0 -255 initialisiert etc]</p>
<p>danach wird in der funktion rc4 das eben erstellte struct verwendet um den text zu verschlüsseln</p>
<p>richtig soweit?</p>
<p>und was verdammt ist ein unsigned char? ... kann man da nicht irgendwie einen string nehmen .... [buffer_ptr[counter] ^= state[xorIndex]; sowas müsste doch auch mit nem string gehen ... das ver xoren]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066135</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 27 May 2006 15:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 15:30:05 GMT]]></title><description><![CDATA[<p>also...</p>
<p>ich habe das ganze jetzt mal etwas umgebaut</p>
<p>allerdings muss ich irgendetwas falsch gemacht haben, denn entschlüsseln funktioniert nicht</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;

#define buf_size 1024

typedef struct rc4_key
{
   unsigned char state[256];
   unsigned char x;
   unsigned char y;
} rc4_key;

#define swap_byte(x,y) t = *(x); *(x) = *(y); *(y) = t

void prepare_key(std::string key_data_ptr, rc4_key *key)
{
  int key_data_len = key_data_ptr.size();
  int i;
  unsigned char t;
  unsigned char swapByte;
  unsigned char index1;
  unsigned char index2;
  unsigned char* state;
  short counter;

  state = &amp;key-&gt;state[0];
  for(counter = 0; counter &lt; 256; counter++)
  {
    state[counter] = counter;
  }
  key-&gt;x = 0;
  key-&gt;y = 0;
  index1 = 0;
  index2 = 0;
  for(counter = 0; counter &lt; 256; counter++)
  {
    index2 = (key_data_ptr[index1] + state[counter] + index2) % 256;
    swap_byte(&amp;state[counter], &amp;state[index2]);
    index1 = (index1 + 1) % key_data_len;
  }
}

std::string rc4(std::string buffer_ptr, rc4_key *key)
{
  int buffer_len = buffer_ptr.size();
  unsigned char t;
  unsigned char x;
  unsigned char y;
  unsigned char* state;
  unsigned char xorIndex;
  short counter;

  x = key-&gt;x;
  y = key-&gt;y;
  state = &amp;key-&gt;state[0];
  for(counter = 0; counter &lt; buffer_len; counter++)
  {
    x = (x + 1) % 256;
    y = (state[x] + y) % 256;
    swap_byte(&amp;state[x], &amp;state[y]);
    xorIndex = (state[x] + state[y]) % 256;
    buffer_ptr[counter] = buffer_ptr[counter]^state[xorIndex];
  }
  key-&gt;x = x;
  key-&gt;y = y;
  return buffer_ptr;
}

int main(int argc, char* argv[])
{
  char seed[256];
  char data[512];
  char buf[buf_size];
  char digit[5];
  int hex, rd,i;
  int n;
  rc4_key key;

  std::string pass = &quot;Testpass&quot;;
  //unsigned char passabl = &quot;testpass&quot;;
  prepare_key( pass, &amp;key);
  std::string str = &quot;Verschlüsselungstes&quot;;

  str = rc4(str, &amp;key);
  std::cout &lt;&lt; str &lt;&lt; std::endl;
  str = rc4(str, &amp;key);
  std::cout &lt;&lt; str;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1066161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066161</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 27 May 2006 15:30:05 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 16:26:01 GMT]]></title><description><![CDATA[<p>download123 schrieb:</p>
<blockquote>
<p>also...</p>
<p>ich habe das ganze jetzt mal etwas umgebaut</p>
<p>allerdings muss ich irgendetwas falsch gemacht haben, denn entschlüsseln funktioniert nicht</p>
</blockquote>
<p>Ach kleines Problem. Du musst natürlich den Algorithmus VOR Ver-/Entschlüsselung initialieren. In dem Fall prepare_key(...) aufrufen.</p>
<p>Zum Code:<br />
std::string nutzt i.d.R. char als Datentyp. RC4 nutzt aber unsigned char. Also das ganze ohne Vorzeichen was den Wertebereich verändert. Unter Windows gibt i.d.R. (erstmal) keine Probleme. Dafür garantiert aber niemand und adere OS sehen das anders. Also caste deine Strings vorher:</p>
<pre><code class="language-cpp">// C++ Cast von char nach unsigned char mit std::string str
unsigned char *pBuf = reinterpret_cast&lt;unsigned char*&gt;(str.c_srt());
</code></pre>
<p>Verwende keine &quot;#define&quot;s.</p>
<pre><code class="language-cpp">#define buf_size 1024 /* NICHT VERWENDEN */

const int buf_size = 1024; /* SO SOLLS GEMACHT WERDEN */
</code></pre>
<p>Es erleichtert unglaublich die Arbeit und ist typsicher.</p>
<p>Ansonsten solltest du die Variablen key_data_len und buffer_len als size_t und nicht als int deklarieren. Ebenso müssten dann die Iterationsvariablen i,... auch als size_t deklariert werden.</p>
<p>Deine Fragen aus dem vorigen Posting hast du dir ja schon beantwortet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p><strong>Edit:</strong><br />
Das Makro swap_byte habe ich ganz übersehen.<br />
Hier der C++ Code:</p>
<pre><code class="language-cpp">#define swap_byte(x,y) t = *(x); *(x) = *(y); *(y) = t

// C++ Code
inline void swap_byte(unsigned char &amp;x, unsigned char &amp;y)
{
    unsigned char t = x;
    x = y;
    y = t;
}
// x/y sind nun Referenzen. Du musst die zwei Codezeilen ändern
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1066216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066216</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Sat, 27 May 2006 16:26:01 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 16:54:31 GMT]]></title><description><![CDATA[<p>das klingt soweit echt super ...</p>
<p>aber 2 fragen hab ich noch</p>
<p>zum einen wenn ich das reinterpreten versuche bekomme ich immer sowas</p>
<pre><code class="language-cpp">error: reinterpret_cast from type `const char*' to type `unsigned char*' casts away constness
</code></pre>
<p>in diesem zusammenhang</p>
<pre><code class="language-cpp">void prepare_key(std::string data, rc4_key *key)
{
  unsigned char* key_data_ptr = reinterpret_cast&lt;unsigned char*&gt;(data.c_str());
  size_t key_data_len = data.size();
</code></pre>
<p>und zum anderen</p>
<p>HaJo. schrieb:</p>
<blockquote>
<p>Ach kleines Problem. Du musst natürlich den Algorithmus VOR Ver-/Entschlüsselung initialieren. In dem Fall prepare_key(...) aufrufen.</p>
</blockquote>
<p>hab ich doch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> in der 10. zeile der main</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066254</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 27 May 2006 16:54:31 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 17:17:12 GMT]]></title><description><![CDATA[<p>download123 schrieb:</p>
<blockquote>
<p>das klingt soweit echt super ...</p>
<p>aber 2 fragen hab ich noch</p>
<p>zum einen wenn ich das reinterpreten versuche bekomme ich immer sowas</p>
<pre><code class="language-cpp">error: reinterpret_cast from type `const char*' to type `unsigned char*' casts away constness
</code></pre>
<p>in diesem zusammenhang</p>
<pre><code class="language-cpp">void prepare_key(std::string data, rc4_key *key)
{
  unsigned char* key_data_ptr = reinterpret_cast&lt;unsigned char*&gt;(data.c_str());
  size_t key_data_len = data.size();
</code></pre>
</blockquote>
<p>Stimmt, c_str gibt gibt const Elem_ * zurück.</p>
<pre><code class="language-cpp">unsigned char *pBuf = reinterpret_cast&lt;unsigned char*&gt;(const_cast&lt;char*&gt;(str.c_str()));
</code></pre>
<p>Dann muss noch die Konstanz des Zeiger entfernt werden.</p>
<p>download123 schrieb:</p>
<blockquote>
<p>HaJo. schrieb:</p>
<blockquote>
<p>Ach kleines Problem. Du musst natürlich den Algorithmus VOR Ver-/Entschlüsselung initialieren. In dem Fall prepare_key(...) aufrufen.</p>
</blockquote>
<p>hab ich doch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> in der 10. zeile der main</p>
</blockquote>
<p>Damit meinte ich, dass der Algorithmus sowohl vor der Verschlüsselung als auch vor der Entschlüsselung initialisiert werden muss.</p>
<p>Verschlüsseln:<br />
1.) prepare_key()<br />
2.) rc4()</p>
<p>Entschlüsselen:<br />
1.) prepare_key()<br />
2.) rc4()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066279</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Sat, 27 May 2006 17:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to suche Verschlüsselung nicht so simpel wie xor on Sat, 27 May 2006 17:44:25 GMT]]></title><description><![CDATA[<p>Endlich funktioniert es ...vielen dank!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066305</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 27 May 2006 17:44:25 GMT</pubDate></item></channel></rss>