Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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 😅.

 

Geschrieben (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 von Pizzacorgie28
Geschrieben

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)

Geschrieben
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?

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...