Variable(string) verschlüsseln



  • Hey Community,

    wie kann ich eine Variable(String / Char Array) verschlüssen?

    Das Problem ist wenn ich eine Variable definiere:

    string text = "ABCDEFG";
    

    kann sie z.B. per Hex-Editor so wieder ausgelesen bzw. angezeigt werden, das möchte ich aber verhindern..

    Bitte um Ratschläge 😃



  • Wenn du irgendwas sinnvolles mit dieser Variable machen willst, brauchst du sie in unverschlüsselter Form. Aber ansonsten kommt das Thema "wer kann den Inhalt meines Speichers lesen" hier in schöner Regelmäßigkeit hoch - wer es tatsächlich so weit schafft, kann dir ganz andere Probleme bereiten als diesen String auszulesen.



  • CStoll schrieb:

    Wenn du irgendwas sinnvolles mit dieser Variable machen willst, brauchst du sie in unverschlüsselter Form. Aber ansonsten kommt das Thema "wer kann den Inhalt meines Speichers lesen" hier in schöner Regelmäßigkeit hoch - wer es tatsächlich so weit schafft, kann dir ganz andere Probleme bereiten als diesen String auszulesen.

    Ich verwende den string als Schlüssel für eine einfache Verschlüsselung eines anderen strings, das mit dem Speicher ist nicht wichtig, es ist soll nur eine simple Verschlüsselung sein, jedoch nicht so einfach das man den Schlüssel sogar per Hex-Editor lesen kann.. 😉



  • Was für ein Problem hast du da mit dem Hex-Editor? Ein Passwort sollte natürlich nicht auf Festplatte gespeichert werden, wenn du ganz sicher gehen willst - das gibst du direkt ein, wenn es gebraucht wird.



  • CStoll schrieb:

    Was für ein Problem hast du da mit dem Hex-Editor? Ein Passwort sollte natürlich nicht auf Festplatte gespeichert werden, wenn du ganz sicher gehen willst - das gibst du direkt ein, wenn es gebraucht wird.

    Hier das Beispiel, im Quelltext wird die Variable ekey[] definiert, diese kann aber auch aus der kompilerten .exe Datei ausgelesen werden.. das will ich aber verhindern :p

    http://www.pic-upload.de/view-10499823/hexed.jpg.html



  • Wenn dir die Variable so wichtig ist, darst du sie nicht direkt im Quelltext angeben. Verschlüsselungen ala ekey=decrypt("irgendwas"); könnten ein wenig helfen (bremsen einen Angreifer allerdings nur solange aus, bis er die decrypt-Funktion gefunden hat), wirklich sicher bist du wohl nur, wenn du deine wichtigen Passwörter am Anfang des Programms eingeben lässt.



  • BTW: Falsches Forum, C++ oder gar Rund um die Programmierung wäre wohl besser.



  • und sollte man nicht solche sachen über berechnungen laufen lassen?
    und nicht über ein direkten vergleich?

    mfg



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ (auch C++0x) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn es sich um ein Kennwort handelt brauchst du keine symmetrische Verschlüsselung, ein Hash tut´s da auch. Für eine Wald- und Wiesenanwendung langt MD5, wenn es sicher sein soll nimmste SHA-256 oder besser (SHA-384/SHA-512). Unter Windows sind diese Hash Algorithmen Teil der Crypto API und damit ohne externe Bibliotheken verfügbar.
    Du nimmst die Kennworteingabe des Benutzers, berechnest daraus den Hash und speicherst den Hash irgendwo (Passwortdatei, etc.). Bei der Überprüfung des Kennworts erzeugst du aus der Benutzereingabe wieder den Hash und vergleichst diesen mit dem aus deiner Passwortdatei. Damit löst sich dein Problem von ganz allein.


Anmelden zum Antworten