Ich bin nicht wirklich sicher, wie dieses Problem zu nähern:Assembly Vigenère-Chiffre Programm
Für eine bessere Frequenzeigenschaften das Schlüsselwort Buchstaben alle wiederholt nicht haben sollte. Wenn es den Buchstaben A enthält, ist der verschlüsselte Buchstabe derselbe wie der Klartext, obwohl dies nicht unbedingt eine schlechte Sache ist. Um diesen Algorithmus mit einem Stift und Papier zu implementieren, fordern viele Beschreibungen Sie einen Vigenère Square zu bauen. Dies ist jedoch nicht wirklich notwendig, wenn Sie einen Computer verwenden, um die Codierung und Decodierung zu tun. Im Wesentlichen wird das Schlüsselwort immer wieder über den Klartext geschrieben.
Angenommen, das Schlüsselwort ist CRYPTOGRAM.
CRYPTOGRAMCRYPTOGRAMCRYPTOGRAMCRYPTOGRAMCRYPTOGRAMCRYPTOGRAMCRYPTOGR WEHAVEBEENBETRAYEDALLISDISCOVEREDFLYATONCEMEETUSBYTHEOLDTREEATNINEPM
Bedenken Sie, dass die Buchstaben 0 bis 25. Die Buchstaben auf der Oberseite nummeriert sind, bestimmt das Caesar-Chiffre unten für die Buchstaben zu verwenden. C bedeutet also, dass das Alphabet um 2 verschoben wird, A bedeutet Verschiebung um 0 und so weiter. In mathematischer Hinsicht fügen wir die beiden Buchstaben zusammen modulo 26 hinzu. (Das Quadrat wurde verwendet, weil das Konzept der modularen Arithmetik 1553 von Soldaten nicht allgemein verstanden wurde.)
Zum Entschlüsseln der Nachricht wird die gleiche Operation ausgeführt umkehren. Das heißt, der Wert des Schlüsselwortbuchstaben wird subtrahiert und nicht hinzugefügt. Schritt 3. Was ist Ihr Code tun sollten
Der Code sollte STDIN und STDOUT zur Ein- und Ausgabe verwenden. (Dies ist der Standardwert .) Verwenden Sie die Umleitung in der Befehlszeile, um aus einer Datei zu lesen und in eine Datei zu schreiben.
Ihr Code sollte eine Datei öffnen, sie Zeichen für Zeichen lesen und in einem Array speichern.
Wenn Sie zum Ende der Datei erhalten, sollten Sie den Inhalt des Array mit einer Vigenère-Chiffre mit dem Schlüsselwort Kryptogramm kodieren, dann drucken Sie es aus.
Pflegen Sie die Unterscheidung zwischen Groß- und Kleinbuchstaben, und ändern Sie nicht nicht alphabetische Zeichen. Dies ist nicht sehr gut für die Sicherheit von Ihre Nachricht, aber das Ergebnis wird besser aussehen.
Dieses Programm sollte glibc-Funktionen verwenden. Zusätzlich zu printf() benötigen Sie getchar() und putchar().
Angenommen, die Eingabedatei enthält nur ASCII-Text. Machen Sie sich keine Gedanken darüber, was bei Nicht-Textdateien mit passiert.
Sobald der Encoder funktioniert, bauen Sie einen Decoder durch Duplizieren des Codes und Ändern der Addition zu einer Subtraktion.
Wenn Sie printf() verwenden, um das Array auszugeben, denken Sie daran, dass für eine Zeichenfolge ein Nullterminal erforderlich ist.
starten, indem das Problem in kleinere Teile nach unten zu brechen wie "lese eingabe von' stdin' "," verschlüssele eine string "," verschlüssele ein char "," drucke ausgabe an stdout ". –
Die Frage wird mit "c" und "assembly" markiert. Es gibt keine Hinweise in der Frage, dass die Assemblersprache benötigt wird. Alle Verweise auf den Code erwähnen Standard-c-Funktionen. –
Was @ KlasLindbäck sagt, genauso wie jede komplexe Aufgabe. Teile es auf. Es scheint sich teilweise schon aufgeteilt zu haben und mit welcher Unteraufgabe hast du ein Problem? –