<?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[Problem mit RC4 implementierung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Projekt, in dem ich eine RC4 Verschlüsselung anwenden möchte. Nun ist der Teil, den ich Verschlüsseln will, eine sich verändernde unsigned char. Da die von mir verwendete RC4-Klasse aber nur eine Methode zum verschlüsseln von char arraies (genauer char*) überladen ist, kann ich keine einzelnen unsigned chars verschlüsseln.</p>
<p>Der Fehler entsteht beim Debuggen dann immer an der Stelle, in der strlen() der RC4-Klasse aufgerufen wird. Daher kommt meine Vermutung, dass nur ZeichenKETTEN angenommen werden. Was kann ich tun, damit einzelne unsigned chars verschlüsselt werden?</p>
<p>Hier nochmals die Klasse:</p>
<pre><code class="language-cpp">#ifndef _BASE64_RC4_
#define _BASE64_RC4_
[...]
class CRC4 
{
private:
    unsigned char sbox[256];      /* Encryption array             */
    unsigned char key[256],k;     /* Numeric key values           */
	int  m, n, i, j, ilen;        /* Ambiguously named counters   */
public:

	  CRC4 () 
	  {
			memset(sbox,0,256);
			memset(key,0,256);
	  }
	  virtual ~CRC4 ()
	  {							
			memset(sbox,0,256);  /* remove Key traces in memory  */
			memset(key,0,256);   
	  }

	  char *Encrypt(char *pszText,const char *pszKey) 
	  {
		    i=0, j=0,n = 0;
			ilen = (int)strlen(pszKey);

			for (m = 0;  m &lt; 256; m++)  /* Initialize the key sequence */
			{
				*(key + m)= *(pszKey + (m % ilen));
				*(sbox + m) = m;
			}

			for (m=0; m &lt; 256; m++)
			{
				n = (n + *(sbox+m) + *(key + m)) &amp;0xff;
				SWAP(*(sbox + m),*(sbox + n));
			}

			ilen = (int)strlen(pszText);
			for (m = 0; m &lt; ilen; m++)
			{
				i = (i + 1) &amp;0xff;
				j = (j + *(sbox + i)) &amp;0xff;
				SWAP(*(sbox+i),*(sbox + j));  /* randomly Initialize the key sequence */
				k = *(sbox + ((*(sbox + i) + *(sbox + j)) &amp;0xff ));
				if(k == *(pszText + m))       /* avoid '\0' beween the decoded text; */
					k = 0;
				*(pszText + m) ^=  k;
			}
			return pszText;

	  }

	  char *Decrypt(char *pszText,const char *pszKey)
	  {
		  return Encrypt(pszText,pszKey) ;  /* using the same function as encoding */
	  }
};

#endif
</code></pre>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273219/problem-mit-rc4-implementierung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 09:21:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273219.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Sep 2010 14:37:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit RC4 implementierung on Thu, 02 Sep 2010 14:44:04 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Projekt, in dem ich eine RC4 Verschlüsselung anwenden möchte. Nun ist der Teil, den ich Verschlüsseln will, eine sich verändernde unsigned char. Da die von mir verwendete RC4-Klasse aber nur eine Methode zum verschlüsseln von char arraies (genauer char*) überladen ist, kann ich keine einzelnen unsigned chars verschlüsseln.</p>
<p>Der Fehler entsteht beim Debuggen dann immer an der Stelle, in der strlen() der RC4-Klasse aufgerufen wird. Daher kommt meine Vermutung, dass nur ZeichenKETTEN angenommen werden. Was kann ich tun, damit einzelne unsigned chars verschlüsselt werden?</p>
<p>Hier nochmals die Klasse:</p>
<pre><code class="language-cpp">#ifndef _BASE64_RC4_
#define _BASE64_RC4_
[...]
class CRC4 
{
private:
    unsigned char sbox[256];      /* Encryption array             */
    unsigned char key[256],k;     /* Numeric key values           */
	int  m, n, i, j, ilen;        /* Ambiguously named counters   */
public:

	  CRC4 () 
	  {
			memset(sbox,0,256);
			memset(key,0,256);
	  }
	  virtual ~CRC4 ()
	  {							
			memset(sbox,0,256);  /* remove Key traces in memory  */
			memset(key,0,256);   
	  }

	  char *Encrypt(char *pszText,const char *pszKey) 
	  {
		    i=0, j=0,n = 0;
			ilen = (int)strlen(pszKey);

			for (m = 0;  m &lt; 256; m++)  /* Initialize the key sequence */
			{
				*(key + m)= *(pszKey + (m % ilen));
				*(sbox + m) = m;
			}

			for (m=0; m &lt; 256; m++)
			{
				n = (n + *(sbox+m) + *(key + m)) &amp;0xff;
				SWAP(*(sbox + m),*(sbox + n));
			}

			ilen = (int)strlen(pszText);
			for (m = 0; m &lt; ilen; m++)
			{
				i = (i + 1) &amp;0xff;
				j = (j + *(sbox + i)) &amp;0xff;
				SWAP(*(sbox+i),*(sbox + j));  /* randomly Initialize the key sequence */
				k = *(sbox + ((*(sbox + i) + *(sbox + j)) &amp;0xff ));
				if(k == *(pszText + m))       /* avoid '\0' beween the decoded text; */
					k = 0;
				*(pszText + m) ^=  k;
			}
			return pszText;

	  }

	  char *Decrypt(char *pszText,const char *pszKey)
	  {
		  return Encrypt(pszText,pszKey) ;  /* using the same function as encoding */
	  }
};

#endif
</code></pre>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947371</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 02 Sep 2010 14:44:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RC4 implementierung on Thu, 02 Sep 2010 14:51:11 GMT]]></title><description><![CDATA[<p>Pack sie in eine Zeichenkette von einem Zeichen Länge? Und denk an die Nullterminerung.</p>
<p>Was jetzt die einfachste Methode dafür ist, hängt von deinem konkreten Aufruf ab, den ich leider in deinem kryptischen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Code nicht finden kann. wenn ich schon sowas lese: <code>Ambiguously named counters</code> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947382</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 02 Sep 2010 14:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RC4 implementierung on Thu, 02 Sep 2010 14:56:21 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Pack sie in eine Zeichenkette von einem Zeichen Länge? Und denk an die Nullterminerung.</p>
<p>Was jetzt die einfachste Methode dafür ist, hängt von deinem konkreten Aufruf ab, den ich leider in deinem kryptischen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Code nicht finden kann. wenn ich schon sowas lese: <code>Ambiguously named counters</code> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Das ist nicht meine Klasse.</p>
<p><code>rc4.Encrypt((char*)ch,&quot;a&quot;);</code></p>
<p>Dabei ist <code>ch</code> die unsigned char, die ich meine....</p>
<p>So rufe ich die Methode auf. Und er meckert rum.</p>
<p>Praktisch also <code>char help[1];</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947383</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 02 Sep 2010 14:56:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RC4 implementierung on Thu, 02 Sep 2010 15:00:45 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<p><code>rc4.Encrypt((char*)ch,&quot;a&quot;);</code></p>
</blockquote>
<p>Das compiliert? <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>Praktisch also <code>char help[1];</code> ?</p>
</blockquote>
<p>Nein.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Und denk an die Nullterminerung.</p>
</blockquote>
<pre><code class="language-cpp">char help[2]={ch,0};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1947384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947384</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 02 Sep 2010 15:00:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RC4 implementierung on Thu, 02 Sep 2010 15:47:42 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>skullyan schrieb:</p>
<blockquote>
<p><code>rc4.Encrypt((char*)ch,&quot;a&quot;);</code></p>
</blockquote>
<p>Das compiliert? <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>Praktisch also <code>char help[1];</code> ?</p>
</blockquote>
<p>Nein.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Und denk an die Nullterminerung.</p>
</blockquote>
<pre><code class="language-cpp">char help[2]={ch,0};
</code></pre>
</blockquote>
<p>Funktioniert jetzt zwar, aber Programm stürzt nun immer ab. Danke trotzdem...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947414</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 02 Sep 2010 15:47:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RC4 implementierung on Thu, 02 Sep 2010 17:10:25 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<p>Funktioniert jetzt zwar, aber Programm stürzt nun immer ab. Danke trotzdem...</p>
</blockquote>
<p>Wenn du es noch ein klein wenig ungenauer beschreibst, könnte man dir sogar helfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> .</p>
<p>Ansonsten: Debugger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947462</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 02 Sep 2010 17:10:25 GMT</pubDate></item></channel></rss>