Compile-time string encryption

Will ich nicht reverse-Ingenieure zu Lesen, die nur-text-der die Saiten in meiner Anwendung. Die triviale Lösung ist die Verwendung eines einfachen XOR-Verschlüsselung. Das problem ist ich brauche einen Konverter und meine Bewerbung wird wie folgt Aussehen:

//Before (unsecure)
char * cString = "Helllo Stackoverflow!";
//After (secure)
char * cString = XStr( 0x06, 0x15, 0x9D, 0xD5FBF3CC, 0xCDCD83F7, 0xD1C7C4C3, 0xC6DCCEDE, 0xCBC2C0C7, 0x90000000 ).c();

Gibt es die Möglichkeit zu pflegen, clean code, indem es etwas zu konstruieren wie

//Before (unsecure)
char * cString = "Helllo Stackoverflow!";
//After (secure)
char * cString = CRYPT("Helllo Stackoverflow!");

Sollte es auch für sehr lange strings ( 1000 Zeichen? 🙂 ). Vielen Dank im Voraus

  • Gut funktioniert es, wenn Sie es versuchen?
  • Natürlich nicht. Die Frage ist ganz klar: gibt es einen Mechanismus, evtl. mit Makros, damit es funktioniert? Keine blöde Frage an alle – soweit ich weiß, gibt es keine genaue Lösung, aber man kann ziemlich nahe mit Vorlagen.
  • Bitte beachten Sie, dass diese Art der Verschlüsselung ist trivial zu brechen; den Inhalt von "cString" werden dann unverschlüsselt, wenn Ihr Programm startet und sichtbar für jedermann mit Zugang zu Ihrem RAM. Diese noch nicht einmal eingerechnet, dass die XOR-trivial zu brechen in und von sich selbst.
  • Ich weiß, aber Sie finden nicht den string mit einem debugger, weil es nicht trennbar von den gewöhnlichen Speicher. Das ist schon alles, was ich will.
  • Leider ist C++ nicht vollständig Abhängige Arten, so dass strings nicht abgebaut werden kann durch die template-Mechanismen (und natürlich auch Sie können nicht durch den Präprozessor, da es keine split-Token). Ihre beste Wette ist, haben Sie Sie extern definiert, die in einer generierten Datei.
InformationsquelleAutor Listing | 2011-09-01
Schreibe einen Kommentar