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 😅. Zitieren
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 Zitieren
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. Zitieren
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 Zitieren
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 Zitieren
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 Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.