Verschlüsseln / codieren von Daten in der Config
-
Hallo,
kurz vor weg ich habe nicht sehr viel Erfahrung mit C# und muss jetzt ein bestehendes C#Programm erweitern.
Ich soll jetzt in dem Programm, teile der app.config verschlüsseln genau gesagt geht es um ein Benutzer mit Passwort. Aktuelle sind sie unter User Settings als String eingetragen.
Mein Ziel ist es, dass man in der Config das unverschlüsseltes Passwort einträgt, dann das Programm startet, beim initialisieren wird das PW und der Benutzer codiert und verschlüsselt in der Config zurück geschrieben. So das beim wiederholten Starten nur die Codierten Strings zu geladen werden.
Jetzt meine Fragen:
Ist das so umsetzbar?
Gibt es eine fertige Api dafür?
ich sollte nicht die erste Person sein die sowas haben möchte.
Wie kann man denn die app.Config verändern oder brauch ich eine separate Config?
Ich habe gesehen das die getter und setter generiert werden wie mach man das?
Wie verschlüsselt man in C#? welche api?Es wäre schön wenn mir jemand weiter helfen könnte.
-
Das PW sollte erst gar nicht klartext in die Datei kommen.
In die Datei sollte maximal ein verschlüsselter Hash aus der User und PW Kombination.
Nie beides getrennt, und nie etwas im Klartext.z.B.:
"Wurstbrot" + UserName + "73abb" + Password + "in da hood"
das dann AES Verschlüsseln (oder besseres) und abspeichern.beim auflösen dann wieder entschlüsseln und zwischen UserName, PW und rauschen aufdröseln.
-
Nud3l schrieb:
Ist das so umsetzbar?
Gibt es eine fertige Api dafür?
ich sollte nicht die erste Person sein die sowas haben möchte.
Wie kann man denn die app.Config verändern oder brauch ich eine separate Config?
Ich habe gesehen das die getter und setter generiert werden wie mach man das?
Wie verschlüsselt man in C#? welche api?Der Reihe nach:
> Ist das so umsetzbar?
Ja schon, aber es ist eher ein verschleiern und kein echtes Verschlüsseln (denn unter .NET ist Dein Code zur Entschlüsselung leider immer noch auslesbar, da es sich um simplen Byte-Code handelt. Du kannst die Verschleierung aber mit einem Obfuscator vertiefen.> Gibt es eine fertige Api dafür?
Eine API brauchts da nicht, das .NET Framework stellt von Haus aus schon diverse Verschlüsselungsmethoden bereit die sehr leicht nutzbar sind.> Wie kann man denn die app.Config verändern oder brauch ich eine separate Config?
Du kannst Deine (von einem externen Tool) verschlüsselten Daten natürlich direkt in Deine App.Config eintragen, dass kannst Du direkt in Deinen Projekt-Settings im Visual-Studio erledigen per Copy & Paste.> Ich habe gesehen das die getter und setter generiert werden wie mach man das?
Was hat das mit Deiner Frage zu tun? Das ist ein völlig anderes Thema. Sowas geht über Build-Tools, die kann man sich schreiben und als Pre-Build in den Build-Settings Deines Projektes einstellen. Aber das hat nun echt nix mit Deiner Frage zu tun sondern wäre ein separates Thema.> Wie verschlüsselt man in C#? welche api?
Wie oben gesagt, keine API, dass Framework reicht aus.
Du findest alle nötigen Bordmittel im Namespace "System.Security.Cryptography"
-
Hash:
Blöd nur, dass danach jeder etwas anderes in die config-Datei eintragen kann.
Trotz Obfuscator dürfte man den Code, der aus Username und Passwort den Hashstring baut, recht schnell finden und so kann man sich seinen eigenen generieren und in die config eintrage.Verschlüsseln:
Wenn mit mitteln aus dem Cryptography-Namespace verschlüsselt wird findet man den Code sowieso schnell. Dazu steht das Passwort wahrscheinlich direkt im Code.Das ist alles nur scheinbare Sicherheit. Das ganze Konzept ist absurd: Jemand hat lokalen Vollzugriff auf einen PC, muss sich aber in einer Software einloggen.
Aber genau auf den gleichen Unsinn besteht gerade ein Kunde von mir. Tja, dann kriegt er auch was er haben will