Chiffrieren und Dechiffrieren



  • Kann mir wer bei dem Folgenden Programm Helfen ?

    In manchen Sparten steigt der Wunsch nach Geheimhaltung von Dokumenten. Dafür
    wurden in der Vergangenheit viele Verfahren mehr oder weniger erfolgreich eingesetzt. Das
    Prinzip aller dieser Verfahren besteht darin, einen Schlüssel zu nehmen, um die zu
    chiffrierende Datei damit so zu verändern, dass man eine neue Datei erhält, die von
    jemandem, der den Schlüssel nicht kennt, nicht gelesen oder verwendet werden kann. Ein
    einfach zu realisierendes Verfahren sollen Sie einmal umsetzen und das geht so:
    Der Schlüssel besteht aus einem Satz (z.B.: „Mutter will 1 ½ Pfd. Butter.“). Wie Sie wissen:
    1. wird jedes Zeichen eines solchen Satzes in einem Byte im Rechner gespeichert,
    2. bestehen alle Dateien im Rechner aus einer Folge von Bytes und
    3. jedes Byte repräsentiert einen ganzzahligen Wert.
    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 Ausgangsdatei 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 Dechiffrierung erfolgt entsprechend so, dass man die verschlüsselte Datei als
    Ausgangsdatei nimmt und den Schlüssel zeichenweise abzieht, um wieder die
    unverschlüsselte Datei zu erhalten.
    Die Aufgabe besteht jetzt darin,
    1. ein Chiffrierungsprogramm und
    2. ein Dechiffrierungsprogramm zu erstellen und
    3. die Funktion an unterschiedlichen Dateitypen (.c, .exe, .pdf) mit verschiedenen
    Schlüsseln zu zeigen.
    Beginnen Sie Ihre Programme je mit einer kurzen Beschreibung der Funktion, der Abfrage
    des Schlüssels und der Dateinamen für die jeweilige Ausgangs- und Zieldatei. Prüfen Sie,
    ob die Dateien richtig geöffnet werden. Öffnen Sie die Dateien mit “rb“ für „read byte“ bzw.
    “wb“ für „write byte“ und verwenden Sie die Funktionen fgetc() bzw. fputc() zum Lesen
    bzw. Schreiben einzelner Bytes.
    Was passiert, wenn Sie eine chiffrierte Datei mit dem falschen Schlüssel dechiffrieren?

    also wie ich am besten Anfange... weiß nicht sorecht was dort gemeint ist... wie lese ich ne .exe .c oder ne .pdf ein ? und wie soll der schlüssel eingegeben werden ?



  • tastatur lesen: fgets mit stdin als datei
    datei oeffnen, schliessen: fopen, fclose
    datei lesen/schreiben: fgetc, fputc



  • Sollen wir dir hier deine Hausaufgaben machen? Wenn du das gerade in der Schule durchnimmst gab es doch auch bestimmt schon ein paar Übungen auf die du aufbauen kannst? Naja was soll's, hier erst mal was zum Nachdenken. Meiner Meinung nach enthält die Aufgabenstellung sowieso einen entscheidneden Fehler:

    Mögliche Additionsüberträge werden einfach ignoriert.

    Wie soll man den damit eine funktioniernede Dechifriermethode anwenden?



  • fehler? modulo!



  • Sowas habe ich vor ein paar Wochen zum Spass selber gemacht. Geht mit jeder Datei:

    Du fragst n String ab -> Passwort
    Du laedst die zu vertuschende Datei
    Du öffnest eine neue Datei
    Du liest das erste Zeichen der zu vertuschenden Datei
    Dieses Zeichen wird mit dem ersten des Passwortes addiert
    Das nun neue modifizierte Zeichen wird in die neue Datei gespeichert
    Nun naechstes Zeichen aus der zu vertuschenden Datei holen
    Zweites Zeichen des Passwortes addieren
    Blah blah blah ein paar Loops und das wars dann schon

    Die Dechiffierung machst Du dann genau umgekehrt...

    Die beiden Dateien sollten nach dem vertuschen immer noch gleich gross sein.

    ---
    Das mit dem Ignorieren ist wirklich etwas unschön definiert. Man könnte meinen sie sollten bei 255 abgeschnitten werden. Vielleicht sollte man schreiben: Der Zahlenkreis stellt für diese Aufgabe kein Problem dar.

    Wieso Modulo? A oder F %5 = 0, das wäre nur eine Einwegverschlüsselung?



  • modulo 256?
    schliesslich hat ein byte 8 bit und wir reden hier von binaerdateien und nicht ascii (wenn du das nicht meintest, dann ueberlies das).


Anmelden zum Antworten