playfair Verschlüsselung



  • Hier jemand der anschienend dieselbe Aufgabe hatte:
    http://www.c-plusplus.net/forum/310207



  • Danke für die schnelle Rückmeldung.

    @derProgrammierer: Werde mir gleich mal den Thread anschauen.

    Danke auch @ zeh proviech



  • Ok mit dem Beitrag des anderen Threadstarters bin ich noch nicht wirklich weitergekommen.

    Habe bisweilen das hier:

    void main (int argc, char *argv[])
    {
    	char square[5][5],keyword[80],text[80];
    	int i;
    	for (i = 0; i < 25; i++) {
    
    	free ();
    	return 0;
    }
    

    Denn Hinweis dass ich diese for-Schleife brauche hat mir ein Studienkollege gegeben. Leider hat er mir diesbezüglich nicht erklärt, was sie genau macht. Verstehe ja nichtmal warum <25 ...

    meine Fragen sind nun noch immer, wie ich die Buchstaben und das Keyword nun in meine 5*5 Matrix kriege.

    Immerhin soll das Keyword ja mittels argc eingelesen werden. Ansonsten hätte ich mein "square [5][5] einfach mit = {K,E,Y,W,O,R,D,A,B,C, .....} definiert.



  • BrownSugar schrieb:

    Verstehe ja nichtmal warum <25 ...

    Mach mal ein Übungsprogrämmchen, dass Zeichen per scanf oder getchar einliest
    und in square [2][2] speichert, dann wird dir einiges klarer.



  • ok danke das erklärt einiges.

    dann werde ich mal versuchen weiterzukommen mit meinem Proggi 🙂



  • BrownSugar schrieb:

    Verstehe ja nichtmal warum <25 ...

    5 * 5 könnte ewats mit 25 zu tun haben.

    Und kleiner, da Arrays bei C immer mit dem Index 0 anfangen.



  • Danke DirkB.

    Ich habe ähnliche Probleme wie der Threadersteller des weiter oben geposteten Threads in dem du auch geschrieben hast.

    Das Problem:

    Es darf nur string.h und stdio.h verwendet werden, und kein cctype.h
    Darum weiß ich nicht, wie ich die Großbuchstaben so hinbekomme 🙂



  • In C kann man auch mit Buchstaben rechnen:

    Pseudo-

    Wenn Buchstabe >= 'a' und Buchstabe <= 'z' dann
      Buchstabe = Buchstabe - 'a' + 'A'
    


  • Da gibt es aktuell noch mehr Beiträge im Netz zu diesem Thema.

    Wie weit sollt ihr das bringen? Bis zur 5 * 5 -Matrix oder komplett?

    Was ich mich frage, habt ihr im Unterricht zum Programmieren gefehlt oder erwartet der Aufgabensteller auf Eingebungen eurerseits 😕 Denn ihr seid ja schon bei den Grundlagen massiv am schwimmen.

    Dann gibt es noch verschiedene Varianten von Playfair. Welche soll es denn bei euch sein. Okay 5 * 5 Matrix - es gab auch andere Varianten.
    Welche Buchstabe soll dann entfallen? Meist "j", aber nicht immer.
    Sollen die Schlüssel schon vorbearbeitet sein oder beliebig?

    Wenn die Playfair-Matrix fertig werden soll:
    Also ihr braucht eine 5 * 5 Matrix
    dann eine Möglichkeit wo ihr die im Schlüssel genutzten Buchstaben euch merken könnt.

    Ihr kopiert aus "argv" den Schlüssel in die Matrix und merkt euch die nicht genutzten oder die im Schlüssel genutzten Buchstaben. Anschliessend kopiert die restlichen Buchstaben, die im Schlüssel nicht genutzt werden, in die Matrix.

    So jetzt sollte das "z" in der Matrix fehlen. Da dürft ihr euch meist das "j" aus der Matrix kicken, damit das "z" Platz hat.

    Ist die Klein- oder Grossschreibung in der Aufgabenstellung gefordert? Wenn ja, könnt ihr das ergänzen. Aber bringt erst mal ein Minimal-Programm an den Start.

    Diese Beschreibung umfasst schon mehr Zeichen als der hier beschriebene Quelltext 😉

    Ach ja, ihr könnt das bis zur Matrix mit stdio.h hin bekommen. Braucht ihr glaub nur, wenn ihr die Matrix sehen wollt? Wenn ihr wollt, könnt ihr string.h dazu nehmen. Kommt halt drauf an wie die Aufgabe gestellt ist?

    Immer einen Schritt nach dem anderen schreiben und testen.



  • Danke für den ausführlichen Beitrag und auch danke an DirkB für die Buchstaben Addition Erklärung.

    Ja, leider erwartet man sehr viel von uns, ohne die entsprechenden Grundlagen abzudecken. Könnte der Grund sein warum es so viele Wiederaussteiger gibt.

    Die Playfair Verschlüsselung soll fertig werden, das j soll nicht enthalten sein, Schlüssel und Text werden mittels command line übergeben, Kleinbuchstaben sollen in Großbuchstaben umgewandelt werden.

    Das deckt im Großen und Ganzen das Meiste ab. Es sind zwar noch Error Codes gefordert, aber die sind nicht das Problem.

    Werd mich mal mit der Hilfe deines Beitrags nochmal dahinterklemmen.



  • So ich bin jetzt gerade dabei die 5*5 Matrix zu befüllen.
    Habe auch die Buchstaben von A-Z ohne J.

    Das Problem ist .... er gibt mir die Buchstaben untereinander aus und nicht in der 5*5 Matrix. Komme einfach nicht auf den Fehler. Vielleicht seht ihr mehr.

    Hier ein Codeauszug:

    char square[5][5],character ='A';
    int i,j;
    
    .
    .
    .
    .
    .
    
                  for (i=0;i<5;i++){
    		for (j=0;j<5;j++)
    		{
    			square[i][j] = character++;
    			if (character == 'J')
    			{
    				character = 'K';
    				}
    			printf("%c\n", (char)square[i][j]);
    			}
    


  • Vielleicht solltest du zum passenden Zeitpunkt einen Zeilenumbruch ausgeben.



  • BrownSugar schrieb:

    ...
    Ja, leider erwartet man sehr viel von uns, ohne die entsprechenden Grundlagen abzudecken.
    ...

    BrownSugar schrieb:

    ...
    Das Problem ist .... er gibt mir die Buchstaben untereinander aus und nicht in der 5*5 Matrix. Komme einfach nicht auf den Fehler. Vielleicht seht ihr mehr.
    ...

    Ihr sollt euch C also komplett selbst beibringen oder wie, da euch ja offensichtlich nicht einmal die Ausgabe eines Zeilenumbruchs vermittelt wurde. 😮



  • Im Studium darf man auch selbständig Bücher lesen.



  • Das mit der Ausgabe der Matrix hat nun geklappt, danke für den Zeilenumbruch Tipp.
    Wenn man längere Zeit vor dem PC sitzt übersieht man solche Sachen recht leicht.

    Und ja, ich sitze derweil schon mit Buch hier 🙂 Jetzt muss nur noch das Keyword in die Matrix, dann passt das. Wird schon klappen.


Anmelden zum Antworten