Problem mit Codieren [C]

Wie ich das sehe, hast Du 3 Möglichkeiten:
1. Du gehst zu deinem Prof und sagst, Du hast nix gemacht, weil das mit der Addition so nicht funktioniert.
2. Du machst das mit dem XOR und sagst Deinem Prof, weil das mit der Addition nicht geht, hast Du es anders gelöst.
3. Ist mir gerade erst eingefallen (manchmal ist man eben vernagelt!): Du speicherst das Ergebnis jeder Addition nicht wieder in einem char sondern in einem short int. Dadurch wird die verschlüsselte Datei natürlich doppelt so groß wie die Klartextdatei.
 
Ich schreib mal was hier steht:"Das Verschlüsselungsverfahren besteht jetzt darin, das erste Byte der Datei mit dem ersten Byte (=Buchstabencode) des Schlüssels zu addieren und als verschlüsseltes Byte in eine neue Datei zu schreiben. Mögliche Additionsüberträge werden einfach ignoriert. Entsprechend verfährt man mit dem zweiten Byte von Ausgangsdatei und Schlüssel usw. , bis der Schlüssel oder die Aisgangsdatei zu Ende ist. Ist der Schlüssel zu Ende, wird beim nächsten Verschlüsselungsvorgang wieder mit dem ersten Zeichen des Schlüssels fortgefahren, ist die Datei zu Ende, ist die Chiffrierung abgeschlossen.

Die Deschiffrierung erfolgt entsprechend so, dass man die verschlüsselte Datei als Ausgangsdatei nimmt und den Schlüssel zeichenweise abzieht, um wieder die Ausgangsdatei zu erhalten.

So.....ist das denn nun so möglich?
 
@umbrasaxum:
Denn selbst mit dem 'z' = 122 kann man dann immernoch addieren.
Klar kann man, mit Textdateien geht es ja auch. Wenn Du aber ein Byte aus einer Binärdatei z.B. mit dem Wert 221 hast und ein Schlüsselbyte 'z', hast du im Ergebnis 343, und schon hast Du den Überlauf. Deshalb klappt das nicht mit Binärdateien.
 
@ umbrasyxum: Kann ja passieren :)
@Cpt_Sulo: Wie oben schon gesagt, kann die Aufgabenstellung nur mit ASCII-Textdateien funktionieren. Wenn die Überläufe ignoriert werden, hast Du einen Informationsverlust und die Datei kann nicht wiederhergestellt werden. Sollte Dein Prof. etwas Anderes behaupten, dann richte Ihm schöne Grüße von mir aus und er solle mir das bitte beweisen.
 
moin


Eine Frage:
Was ist mit ignorieren gemeint?
Soll einfach das "originale" Zeichen stehengelassen werden?
Weil sonst wirst du wirklich informationen verlieren.


mfg
umbrasaxum
 
Cpt_Sulo:

Das ist so nicht mehr möglich. Dadurch, dass du den Additionsüberlauf weglässt, fällt Information weg. Du bekommst für zwei mögliche Ausgangswerte ein und denselben Zielwert beim Chiffrieren. Beim Entcoden kannst du dann nicht mehr feststellen, welcher der beiden Ausgangswerte das war.
 
Zurück