<?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[Bildverschlüsselung schlägt fehl, wieso?]]></title><description><![CDATA[<p>Hallo. Ich hatte vor, eine Bilddatei einzulesen, sie dann mittels XOR zu verschlüsseln. Hat nicht geklappt. Woran liegt es, dass <code>strName.write</code> nicht funktioniert? (Bin Anfänger) Compiler meldet an der Schreibstelle einen sog. &quot;Assertion failure - INVALID NULL POINTER&quot;.</p>
<p>??</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

#define MAX 4096

const char* const pFILENAME = &quot;images.jpg&quot;;

int main()
{
	char buf[MAX];
	fstream strName(pFILENAME ,ios::binary|ios::in|ios::out);
	if (!strName)
	{
      cout &lt;&lt; &quot;Fehler beim Öffnen der Datei &quot; &lt;&lt; pFILENAME &lt;&lt; endl;
      return 1;
	}

	for(int i = 0; i &lt; MAX; ++i)
	{

	   if(!strName.eof())
	   {
		   strName.read(buf,MAX);
	   }

	}
	cout &lt;&lt; buf;
	for(int i = 0; i &lt; MAX; ++i)
	{
			buf[i] ^= buf[i+1];
	}
    cout &lt;&lt; buf;
	for(int i = 0; i &lt; MAX; ++i)
	{
			strName.write(reinterpret_cast&lt;const char*&gt;(buf[i]),MAX); // &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
	}

	cout &lt;&lt; buf;
	strName.close();
	cin.get();
}
</code></pre>
<p>PS.: Ich bin mir bewusst, dass das womöglich nicht mein einziger Fehler ist. Bin für jeden Vorschlag dankbar.</p>
<p>Gruß, skullyan.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270590/bildverschlüsselung-schlägt-fehl-wieso</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 01:15:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270590.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Jul 2010 00:24:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 00:24:30 GMT]]></title><description><![CDATA[<p>Hallo. Ich hatte vor, eine Bilddatei einzulesen, sie dann mittels XOR zu verschlüsseln. Hat nicht geklappt. Woran liegt es, dass <code>strName.write</code> nicht funktioniert? (Bin Anfänger) Compiler meldet an der Schreibstelle einen sog. &quot;Assertion failure - INVALID NULL POINTER&quot;.</p>
<p>??</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

#define MAX 4096

const char* const pFILENAME = &quot;images.jpg&quot;;

int main()
{
	char buf[MAX];
	fstream strName(pFILENAME ,ios::binary|ios::in|ios::out);
	if (!strName)
	{
      cout &lt;&lt; &quot;Fehler beim Öffnen der Datei &quot; &lt;&lt; pFILENAME &lt;&lt; endl;
      return 1;
	}

	for(int i = 0; i &lt; MAX; ++i)
	{

	   if(!strName.eof())
	   {
		   strName.read(buf,MAX);
	   }

	}
	cout &lt;&lt; buf;
	for(int i = 0; i &lt; MAX; ++i)
	{
			buf[i] ^= buf[i+1];
	}
    cout &lt;&lt; buf;
	for(int i = 0; i &lt; MAX; ++i)
	{
			strName.write(reinterpret_cast&lt;const char*&gt;(buf[i]),MAX); // &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
	}

	cout &lt;&lt; buf;
	strName.close();
	cin.get();
}
</code></pre>
<p>PS.: Ich bin mir bewusst, dass das womöglich nicht mein einziger Fehler ist. Bin für jeden Vorschlag dankbar.</p>
<p>Gruß, skullyan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926410</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 15 Jul 2010 00:24:30 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 00:57:25 GMT]]></title><description><![CDATA[<p>ein ziechen ist nicht 4096 stück</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926420</guid><dc:creator><![CDATA[dddddd]]></dc:creator><pubDate>Thu, 15 Jul 2010 00:57:25 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 08:58:46 GMT]]></title><description><![CDATA[<p>dddddd schrieb:</p>
<blockquote>
<p>ein ziechen ist nicht 4096 stück</p>
</blockquote>
<p>Soll aber die ganze Datei auslesen. Die ist 4 kB groß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926513</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 15 Jul 2010 08:58:46 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 09:01:28 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<p>dddddd schrieb:</p>
<blockquote>
<p>ein ziechen ist nicht 4096 stück</p>
</blockquote>
<p>Soll aber die ganze Datei auslesen. Die ist 4 kB groß.</p>
</blockquote>
<p>Du hast aber das Schreiben als Fehler angegeben, nicht das lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926516</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 15 Jul 2010 09:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 09:02:05 GMT]]></title><description><![CDATA[<p>Warum machst du es beim write nicht genau so wie beim read? Dann sollte das Schreiben funktionieren.</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926517</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 15 Jul 2010 09:02:05 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 09:03:52 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Warum machst du es beim write nicht genau so wie beim read? Dann sollte das Schreiben funktionieren.</p>
<p>Lars</p>
</blockquote>
<p>Wobei natürlich auch beim read die for-Schleife sinnfrei ist.</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926518</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 15 Jul 2010 09:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 09:12:33 GMT]]></title><description><![CDATA[<p>Du verwandelst die Adresse jedes der 4096 Zeichen in buf in einen char* und übergibst den an write. Das führt dazu, dass er von jedem Zeichen ausgehend die nächsten 4096 Zeichen schreibt, was nur beim 1. Zeichen funktioniert.<br />
Nimm einfach <code>strName.write(buf,MAX);</code> (ohne Schleife drumrum).<br />
Oder du beschäftigst dich noch mal genauer mit den Ein-/Ausgabefunktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926526</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Thu, 15 Jul 2010 09:12:33 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 09:21:22 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<pre><code class="language-cpp">strName.write(reinterpret_cast&lt;const char*&gt;(buf[i]),MAX);
</code></pre>
</blockquote>
<p>Mal abgesehen von dem, was die anderen schon gesagt haben: für mich sieht dein Cast nicht ganz richtig aus. Ich gehe mal davon aus, dass du eigentlich &amp;buf[i] oder buf+i casten wolltest. Dann hättest du nämlich die Adresse des i. Elementes. So wie du es hier machst, castest du das Byte (also den Inhalt) an dieser Positionen als Pointer. Ist das Byte mal schwarz (also 0) hast du deinen 0-Pointer. Abgesehen davon dürfte dich dieser Cast an interessante Stellen im Speicher führen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926533</guid><dc:creator><![CDATA[Heimelchen]]></dc:creator><pubDate>Thu, 15 Jul 2010 09:21:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 09:53:04 GMT]]></title><description><![CDATA[<p>Meint ihr so?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

#define MAX 4096

const char* const pFILENAME = &quot;images.jpg&quot;;

int main()
{
	char buf[MAX];
	fstream strName(pFILENAME ,ios::binary|ios::in|ios::out);
	if (!strName)
	{
      cout &lt;&lt; &quot;Fehler beim Öffnen der Datei &quot; &lt;&lt; pFILENAME &lt;&lt; endl;
      exit (1);
	}
	if(!strName.eof())
	{
			strName.read(buf,MAX);
	}

	cout &lt;&lt; buf;
	for(int i = 0; i &lt; MAX; ++i)
	{
			buf[i] ^= buf[i+1];
	}
    cout &lt;&lt; buf;
	strName.write(buf,MAX);

	cout &lt;&lt; buf;
	strName.close();
	cin.get();
}
</code></pre>
<p>Gibt zwar keinen Fehler mehr, aber Schreiben geht trotzdem nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926534</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 15 Jul 2010 09:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 09:28:05 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Du verwandelst die Adresse jedes der 4096 Zeichen in buf in einen char* und übergibst den an write.</p>
</blockquote>
<p>Nein, jedes Zeichen wird in eine Addresse gecastet.</p>
<pre><code>reinterpret_cast&lt;const char*&gt;(buf[i])
</code></pre>
<p>1.) Lass doch einfach mal das scheiss reinterpret_cast weg, wenn du keine Ahnung hast, was es macht.<br />
2.) if (!strName.eof()) .. tja du hast doch die Datei gerade bis zum ende gelesen. Also ist er am Ende der Datei und der Befehl nach dem if wird nicht ausgefuehrt. Auch waere es vielleicht von Vorteil, nicht die alte Bilddatei zu veraendern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926535</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 15 Jul 2010 09:28:05 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 09:35:52 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>ipsec schrieb:</p>
<blockquote>
<p>Du verwandelst die Adresse jedes der 4096 Zeichen in buf in einen char* und übergibst den an write.</p>
</blockquote>
<p>Nein, jedes Zeichen wird in eine Addresse gecastet.</p>
<pre><code>reinterpret_cast&lt;const char*&gt;(buf[i])
</code></pre>
<p>1.) Lass doch einfach mal das scheiss reinterpret_cast weg, wenn du keine Ahnung hast, was es macht.<br />
2.) if (!strName.eof()) .. tja du hast doch die Datei gerade bis zum ende gelesen. Also ist er am Ende der Datei und der Befehl nach dem if wird nicht ausgefuehrt. Auch waere es vielleicht von Vorteil, nicht die alte Bilddatei zu veraendern.</p>
</blockquote>
<p>Der scheiß Cast ist weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926554</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 15 Jul 2010 09:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 10:07:46 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>ipsec schrieb:</p>
<blockquote>
<p>Du verwandelst die Adresse jedes der 4096 Zeichen in buf in einen char* und übergibst den an write.</p>
</blockquote>
<p>Nein, jedes Zeichen wird in eine Addresse gecastet.</p>
</blockquote>
<p>Stimmt, hab ich glatt übersehen <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="😉"
    /><br />
Wie auch immer, du solltest dich wirklich mal intensiver mit IO beschätigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926582</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Thu, 15 Jul 2010 10:07:46 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 11:27:49 GMT]]></title><description><![CDATA[<p>Was mache ich denn hier genau falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926620</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 15 Jul 2010 11:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to Bildverschlüsselung schlägt fehl, wieso? on Thu, 15 Jul 2010 11:42:31 GMT]]></title><description><![CDATA[<p>Ps.: Wenn ich ein neues Stream-Objekt anlege, funktioniert das Schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926630</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Thu, 15 Jul 2010 11:42:31 GMT</pubDate></item></channel></rss>