Verschlüsselungs-"Algorithmus" - Was haltet ihr davon?
-
AndreasLeeb schrieb:
Ja ich hab goto benutzt, weil ich noch keine Arrays einer Funktion übergeben.
Was hat denn goto mit Arrays und Funktionen zu tun?
AndreasLeeb schrieb:
Ich lern C erst seit heute ;)Und ich dachte, einmal goto nutzen wird dich schon nicht umbringen...
Und ein zweites mal auch nicht und ... Vergiss goto. Du wirst es in den nächsten paar Jahren nicht brauchen.
AndreasLeeb schrieb:
...und mir wäre spontan keine alternative eingefallen die ich schon kann.
Schleifen hast du aber schon gehabt.
-
AndreasLeeb schrieb:
Ich lern C erst seit heute
Wenn du am ersten Tag schon goto gelernt hast, schmeiß das Buch/Tutorial nach dem du lernst weit weit weg.
-
Goto wurde nur der vollständigkeit halber vorgestellt. ja an ne while schleife hab ich nicht gedacht. wenn ich arrays einer funktion übergeben könnte hätte ich nicht alles in main reingequetscht. morgen werd ichs überarbeiten und ne while schleife nehmen. aber was hältst du ansonsten davon (wenn man goto absieht)?
-
Warum nutzt du für flushin ein Makro und keine Funktion?
Warum flust du überhaupt stdin? Das ist undefiniert! Unter Windows + MSVC funktioniert es aber problemlos. Das sollte man sich trotzdem nicht angewöhnen.Die Verschlüsselung an sich ist in der Theorie sicher, aber in der Praxis unrauchbar. Daher ist das Wort Verschlüsselung falsch. Das ist im besten Fall eine Verschleierung.
-
ich nehm ein makro weil das kürzer ist. und ich hatte mal ein beispiel wenn man mehrere eingaben hintereinander machte wurde als zweite eingabe enter genutzt und mit fflush kann man das umgehn, seit dem nehm ich immer fflush(stdin)
-
und wie soll ich es in der praxis brauchbar machen? dass es dateien einliest und den "verschleierten" text in eine andere schreibt?
-
AndreasLeeb schrieb:
ich nehm ein makro weil das kürzer ist. und ich hatte mal ein beispiel wenn man mehrere eingaben hintereinander machte wurde als zweite eingabe enter genutzt und mit fflush kann man das umgehn, seit dem nehm ich immer fflush(stdin)
Wie schon geschrieben, ist das Verhalten von fflush auf stdin nicht definiert: http://www.c-plusplus.net/forum/viewtopic.php?t=39349
Nur weil der Compiler keine Fehler liefert und das Programm gerade läuft, heißt es noch lange nicht, dass das Programm auch richtig ist.
AndreasLeeb schrieb:
und wie soll ich es in der praxis brauchbar machen? dass es dateien einliest und den "verschleierten" text in eine andere schreibt?
Warum nicht, wenn du dein C-Wissen darauf anwenden willst.
Du kannst es auch als Filter realisieren.
Die XOR oder auch die Caesar-Verschlüsselung sind für die Praxis wenig geeignet.
-
So jetzt die überarbeitete Version für Windows und Linux:
#include <stdio.h> #if defined __WIN32__ #define flushin fflush(stdin) #elif defined __linux__ #define flushin __fpurge(stdin) #endif int main(void){ char base[200], encr[200], decr[200], key; int i, lettercount, choice; while(1==1){ printf("\n\nType the number of what you want to do:\nEncrypt letters - 1\nDecrypt letters - 2\nQuit the program - any other number\n> "); scanf("%i", &choice); flushin; if(choice == 1){ printf("How many letters do you want to enrypt? (max 200)\n> "); scanf("%i", &lettercount); flushin; printf("Which key do you want to encrypt with?\n> "); scanf("%c", &key); flushin; for(i = 0; i < lettercount; ++i){ printf("Type the %i. letter you want to encrypt\n> ", i+1); scanf("%c", &base[i]); flushin; encr[i] = base[i]^key; printf("Encrypted letter: %c\n", encr[i]); } continue; } else if(choice == 2){ printf("How many letters do you want to decrypt? (max 200)\n> "); scanf("%i", &lettercount); flushin; printf("Which key do you want to decrypt with?\n> "); scanf("%c", &key); flushin; for(i = 0; i < lettercount; ++i){ printf("Type the %i. letter you want to decrypt\n> ", i+1); scanf("%c", &encr[i]); flushin; decr[i] = encr[i]^key; printf("Decrypted letter: %c\n", decr[i]); } continue; } else break; } return 0; }
Habs auch unter LInux getestet, funktioniert!
-
AndreasLeeb schrieb:
und wie soll ich es in der praxis brauchbar machen? dass es dateien einliest und den "verschleierten" text in eine andere schreibt?
Er meint nicht, dass dein Programm praxisuntauglich wäre, sondern die XOR-Verschlüsselung. Du darfst dies als nicht mehr als eine Programmierübung sehen, nicht als brauchbare Verschlüsselung, egal welche Versprechen manche Schlangenölverkäufer über One Time Pads machen.
-
ok. war eigentlich eh erst eine übung