Problem mit Codieren [C]

Sch..., Matthias hat recht, Ich habe Mist erzählt, es sollte gehen.
Angenommen, das Klartextbyte ist 221, das Schlüsselbyte = 112, dann wäre die Summe 333, d.h. im Cryptbyte steht 78. Wenn man jetzt von 78 wieder die 112 abzieht, dann hat man -34. und wenn man jetzt noch 255 - 34 rechnet, hat man wieder 221.
man muß also nur schauen, ob das Cryptbyte kleiner ist als das Schlüsselbyte und dementsprechend rechnen:
Verschlüsseln:
Code:
 unsigned char cryptbyte = plainbyte + keybyte; //Überlauf wird ignoriert
Entschlüsseln:
Code:
 if(cryptbyte > keybyte)
      plainbyte = cryptbyte - keybyte;
      else
      plainbyte = 255 - (keybyte - cryptbyte); // oder plainbyte = 255 - keybyte + cryptbyte;
Sorry für die ganze Verwirrung, manchmal sollte man halt vorher denken! :-(
 
moin


Habs getestet und es geht ohne vorher überprüfen, stumpfes ausrechnen genügt.

Code:
unsigned char original, key, codiert, decodiert;
	
original = 250;
key = 120;

codiert = original + key;
decodiert = codiert - key;
Ergbnis: decodiert ist gleich original.


mfg
umbrasaxum
 
@umbrasaxum
Da gebe ich Dir uneingeschränkt recht.

Allerdings stellt sich dann wieder die Frage, warum es bei Cpt_Sulo nicht mit exe's funktioniert.
 
lol......

Bitte genauer erklären....Danke

Jetzt muss ich lachen........Hab die antwort hier noch auf der 2ten Seite geschrieben......ich sach nur: hier ist was los!

Gut....ich habe mittlerweile auf unsigned char umgestellt. Geht aber immernoch nicht.!

Ich farge das Ende des Schlüssels ab, mit if(code[ i ]==0) und setze den Zähler auf null.
Dann ist da noch die sache, das ich das Ganze in einer While-Schleife hab, die fussgesteuert ist }while( !feof(loadedq));
Bei Textdateien erhalte ich immer ein wenig wirres Zeugs zusätzlich ans Ende......
 
Zuletzt bearbeitet:
moin


So, ich habs jetzt mal gemacht, und bei mir funktioniert es vorzüglich:
codieren
Code:
#include <stdio.h>

int main()
{
	unsigned char zeichen;

	FILE *original;
	FILE *codiert;
	original = fopen("test.exe", "rb");
	codiert = fopen("test.exe.cod", "wb");

	do
	{		
		zeichen = fgetc(original);
		fputc(zeichen + 'a', codiert);
	}
	while(!feof(original));

	fclose(original);
	fclose(codiert);

	return 0;
}

decodieren
Code:
#include <stdio.h>

int main()
{
	unsigned char zeichen;

	FILE *original;
	FILE *codiert;
	original = fopen("test.exe", "wb");
	codiert = fopen("test.exe.cod", "rb");

	do
	{		
		zeichen = fgetc(codiert);
		fputc(zeichen - 'a', original);
	}
	while(!feof(codiert));

	fclose(original);
	fclose(codiert);

	return 0;
}

Ach, ist das nicht schön ;)


mfg
umbrasaxum
 

Neue Beiträge

Zurück