Pizzacorgie28 Geschrieben 26. April 2021 Geschrieben 26. April 2021 Moin leute, habe mich mal an die sicherste Verschlüsselungsmethode gewagt nur um jetzt festzustellen das ich was vergeigt habe. #include <stdio.h> #include <string.h> void caesar(unsigned char d[])//bytes ohne vor zeichen nur bis 255 { for (int i=0; d[i]; i++) { d[i] += 12;//verschlüsselungs weite if (d[i] > 'z') { d[i] += 'a' - 'z' - 1; } } } void caesarback(unsigned char d[])//bytes ohne vor zeichen nur bis 255 { for (int i=0; d[i]; i++) { d[i] += -12;//entschlüsselungs weite if (d[i] > 'z') { d[i] += 'a' - 'z' - 1; } } } char * stringToLower(char*); int main(void){ char verent=0, d[]="abcdefghijklmnopqrstuvwxyz";//alphabet //--Verschlüsselung-------------------------------- printf("wollen sie (1)ver oder (2) entschlüseln?"); do { printf("bitte geben sie 1 oder 2 ein\n"); scanf(" %c", &verent); } while (verent >'2'); if (verent == '1') { printf("Verschlüsselungs text eingabe\n"); scanf(" %s", &d); stringToLower(d); caesar(d); printf("%s\n", d); return 0; } //--Entschlüsselung-------------------------------- else { printf("Endschlüsselungs text eingabe\n"); scanf(" %s", &d); caesarback(d); printf("%s\n", d); } return 0; } //ersetzt in einem String Großbuchstaben durch Kleinbuchstaben------------------ char * stringToLower(char *d) { int i; int len = strlen(d); for(i=0; i<len; i++) { if(d[i] >= 'A' && d[i] <= 'Z') { d[i] += 32; } } return 0; } Das Programm verschlüsselt gibt allerdings beim Entschlüsseln nicht alle Zeichen korrekt aus und ich finde den Fehler nicht . Hoffe wer von euch kann mir da helfen damit in zukunft keiner mehr meine daten knacken kann 😅.
charmanta Geschrieben 26. April 2021 Geschrieben 26. April 2021 bitte gestatte mir den Hinweis dass die Schwachstelle dieser Verschlüsselung die verbleibende Häufigkeit einzelner Zeichen ist ... Ein so verschlüsselter Text ist in kurzer Zeit wieder lesbar Pizzacorgie28 reagierte darauf 1
Pizzacorgie28 Geschrieben 26. April 2021 Autor Geschrieben 26. April 2021 Sag bloß 😂 ja ich soll für mein Studium solch ein Programm entwickeln bloß leider funktioniert das endschlüsseln nicht ganz richtig und finde meinen Fehler nicht.
Jana309 Geschrieben 26. April 2021 Geschrieben 26. April 2021 Überprüfe doch einmal deine "Überlaufkorrektur" beim Entschlüsseln. Bei Verschlüsseln funktioniert diese korrekt, beim Entschlüsseln leider nicht. Pizzacorgie28 reagierte darauf 1
Pizzacorgie28 Geschrieben 28. April 2021 Autor Geschrieben 28. April 2021 (bearbeitet) Hmmm schon geschaut aber finde da nix. stehe da grad echt auf dem schlauch 🙈 also wenn ich beim entschlüsseln anstatt -12 zu einer 14 mache kommt wieder der richtige wert raus was ja an sich auch korrekt ist aber irgendwie ein wenig geschummelt ist würde ich behaupten xD. Bearbeitet 28. April 2021 von Pizzacorgie28
Jana309 Geschrieben 29. April 2021 Geschrieben 29. April 2021 Beim Verschlüsseln erhöhst du den Wert des chars, checkst dann ob sein Wert zu hoch ist und wenn ja ziehst du die Zeichensatzlänge (26) ab um wieder im gültigen Bereich zu landen. Beim Entschlüsseln verringerst du (in deiner ersten Code-Version) den Wert des chars, checkst dann aber nicht ob der Wert zu niedrig ist, sondern (sinnloserweise) wie beim Verschlüsseln ob der Wert zu hoch ist. Aus der -12 eine +14 zu machen ist eine möglich Korrektur des Problems, dabei solltest du dir aber im Klaren sein, warum es funktioniert. (Zeichensatzlänge (26) - entschlüsselungsweite(12) = +14) Pizzacorgie28 und pr0gg3r reagierten darauf 1 1
Whiz-zarD Geschrieben 29. April 2021 Geschrieben 29. April 2021 vor 12 Stunden schrieb Pizzacorgie28: also wenn ich beim entschlüsseln anstatt -12 zu einer 14 mache kommt wieder der richtige wert raus was ja an sich auch korrekt ist aber irgendwie ein wenig geschummelt ist würde ich behaupten xD. Nein, denn genau das ist der Witz: Es ist ein Ring. Wenn ich ein Zeichen um 12 Stellen verschiebe, um wie viele Stellen muss ich es weiterschieben, um wieder auf den Ursprung zu kommen? Pizzacorgie28 und pr0gg3r reagierten darauf 1 1
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden