String verschlüsseln

lindin

Erfahrenes Mitglied
Hallo!
ICh verschlüssel mit folgender Funktion Text:
Code:
char crypt(char ch,char key) //verschlüsseln
{
	//if(ch=='13') {return ch;}
	//	else if(ch=='10') {return ch;}
      //else {
		  return ch+key;
//	}
}

Ich entsclüssel den TExt mit der gleichen Funktion (key(dek)=256-key(enk))
Das funktioniert aber nur teilweise!
Ich habe mir den Text (vorher und nachher) mit einem Hex-Editor angeschaut, und die Funktion macht mir aus den Zeichen (dezimal) 10 und 13 das ZEcihen 34 (key(enk)=24,
Ich verstehe nicht, wieso ein Zeichen weniger da ist, und das an allen Stellen, und warum gerade dieser Wert?
 
Hat sich erledigt, ich frage in der If-Abfrage die Hex-Werte ab! Dann geht es! Außerdem mußte ich noch Hex 00 abfragen, keine Ahnung warum...
 
Ich begreife deinen Verschlüsselungsalgorithmus nicht so ganz, aber zieh deine Werte besser von 255 ab statt von 256.
 
Aber mit 256 funktioniert das, mit 255 stürtzt das Programm ab! Hatte ich nämlich auch erst gedacht, das es vonn 255 abgezogen werden müßte
 
Hast du berücksichtigt, das char von Haus aus signed ist? Es kann so zu Ergebnsissen >255 kommen. Eventuell könntest du unsigned char verwenden.
 
Also ich würde sowieso nicht zeilenweise verschlüsseln. Das ist komplizierter und nützt nix. Lieber jedes Byte verschlüsseln (vielleicht noch einen Verschlüsselalgorithmus überlegen), dann braucht man sich auch nicht um solche doofen Abfragen zu kümmern.
 
Aber ich verschlüssel doch Byte-weise, oder nicht? Ich verschlüssel jeden String Zeichenweise, also Byteweise oder nicht?

Und wenn ich das mal mit einem Zeichen wie 'ý' ausprobiere, welches den wert 236 hat, das mit 24 verschlüssel-->260 oder dann 4, und mit 232 entschlüssel, dann funktioniert das!
Mit welchem Zeichen sollte ich das denn wohl mal ausprobieren?
 
Ja, aber du triffst Ausnahmen für 13 und 10. Ist doch unnötig. Besonders wenn dann mal beim Verschlüsseln 13 oder 10 als Zeichen rauskommt, wird es nicht wieder ordentlich entschlüsselt. (Gut passiert bei reinen Textdateien eher selten, aber man kann ja lieber was Allgemeinverwendtbares schreiben.)
 
Ich verstehe ja auch nicht, wieso ich das machen mußte, wieso zB aus 10 und 13 hintereinander das Zeichen 34 wird (aus zwei wird eins)

Diese Zeichen sind anscheinend zusammen '\n', kann das sein?
Und dieses Zeichen kann man doch sowiso nicht eintippen--> das was ich verschlüssel ist eingetippter Text!

Und 10 ist ein 'inversierter Kreis' ?
Und 13 ist eine 'Einzelnote' ?

Solche Sachen werden doch hoffentlich nie beim Eintippen oder so rasukommen?

Hab jetzt mal angefangen alle möglichen Zecihen auszuprobieren, weil ich Panik bekommen habe, aber bis jetzt hat noch alles geklappt
 
Na doch, den Zeilenumbruch/Wagenrücklauf (0x0D und 0x0A) gibst du mit Enter ein. Du bewahrst in deinem Quellcode die Zeilenwechsel, so dass du halt einen Text zu Murks verwandelt, der dann aber noch die selbe Zeilenstruktur hat. Prinzipiell ist das doch aber egal, wenn der Text sowieso verschlüsselt ist, da können dann auch die Zeilenumbrüche weg sein, solange sie beim entschlüsseln wieder auftauchen.
 

Neue Beiträge

Zurück