• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

C++ strings verschlüsseln

hallo

hier sind doch bestimmt ein paar schlaue c++ programmierer zu finden..!? ; )

also hab folgendes problem:
habe en kleines spiel geschrieben und habe eine speicherfunktion eingebaut.. die variablen werden einfach zeilenweise in eine textdatei geschrieben und in der gleichen reihenfolge beim laden wieder ausgelesen.. funtioniert auch..
aber um das cheaten nicht zu einfach zu machen möchte ich den ihalt der textdatei verlüsseln..
habe ich mit folgendem algorithmus gemacht.. anstoss dazu gabs irgendwo im internet.. ; )

Code:
string ENCODE(string sStr)
{
  string sKey = "bla1bla2";

  for (int i = 0; i < sStr.length(); ++i)
  {
    if (sStr[i] == 0)
      break;
    sStr[i] = sStr[i] ^ sKey[i % 8];
  }

  return sStr;
}

decodieren sieht fast genauso aus..
klappt auch.. meistens.. allerdings schneint unter bestimmten umständen auch mal ein steuerzeichen beim verschlüsseln herauszukommen.. z.b. ein zeilenumbruch.. was natürlich eine zeile einfügt, wo keine hingehört und beim laden wird natürlich falsch ausgelesen..

wie kann ich das umgehen bzw. wie könnte ich strings verschlüsseln, ohne das sowas passiert!?
 
cosmophobia schrieb:
hallerdings schneint unter bestimmten umständen auch mal ein steuerzeichen beim verschlüsseln herauszukommen.. z.b. ein zeilenumbruch.. was natürlich eine zeile einfügt, wo keine hingehört
Achja!? Was glaubst du denn, was
Code:
x = 'A' ^ 'K'
ergibt? Siehe http://de.wikipedia.org/wiki/ASCII und http://de.wikipedia.org/wiki/XOR
und beim laden wird natürlich falsch ausgelesen..
Wenn du die Regeln für binary-Strings beachtest, wird da auch alles richtig ausgelesen.
 
sry, aber glaubst du, dein post hat mir jetzt irgendwas gebracht!? bin genau so schlau wie vorher..
was ist mit binary-strings gemeint!? n link oder ne kurze erklärung wären nett gewesen.. was ascii und xor ist weiss ich..
 
Um auf deine ursprüngliche Frage zurückzukommen:

du könntest die von dir encodierte Zeichenfolge hexadezimal ausgeben. Somit scheren dich Steuerzeichen oder ähnliche Störfaktoren einen Dreck ;)
 
das mit dem hexadezimal war eine gute idee.. also ich sag mal, das zeichen nicht als zeichen, sondern nur dessen wert zu speichern..
habs aber einfach mit dezimalzahlen gemacht.. den ascii wert genommen und 200 draufaddiert und immer 3stellige zahlen zu bekommen.. dann lese ichs wieder in 3er blöcken aus.. und funzt.. : )

ps: textdateien sind das einzige, was ich bis jetzt kenne.. : p
 
Oben