Passwort verschlüsselung und Entschlüsseling WPF C#?
Hellu
Ich programmiere zurzeit eine Login Page in C# WPF.
Für das speichern des Passworts verwende ich eine Passwordbox - es wird ein SecureString geliefert. Anscheinend soll das bereits verschlüsselt sein.
Meine Frage ist: verschlüsselt man einen SecureString? Wie soll man ein Passwort an eine Datenbank schicken? Als SecureString oder Verschlüsselt?
(Ich werde nämlich ne Datenbank hinterlegen)
Vielen Dank im voraus ^^
2 Antworten
Du kannst den SecureString in eine verschlüsselte Zeichenfolge umwandeln, und sie dann an die Datenbank senden! Das kann beispielsweise mit der .NET-Klasse
ProtectedData
erfolgen
Die Entschlüsselung erfolgt wenn du den verschlüsselten String wieder in einen SecureString konvertieren möchtest.
Heißt das man verschlüsselt den SecureString einfach nochmal?
Nein. Der SecureString selbst wird nicht verschlüsselt. Es wird der Inhalt des SecureString mit Hilfe von Verschlüsselungsalgorithmen wie AES in einen verschlüsselten String konventiert.
Ich verstehe. Vielen dank für die Antwort! :D mit googlen hab ich kaum eine gute Antwort gefunden
Das heißt der String der im SecureString ist wird verschlüsselt nehm ich an ^-^ (will sicher gehn xd)
Nein. Der Inhalt des SecureString wird in einen verschlüsselten String konvertiert
Oh okay dann schau ich mir das nochmal genauer an
hab mir das angeschaut. dort verlangen die ein byte array als übergabe. auch mit googlen tauche ich zurzeit unter :,/ ... kannst du mir eventl weiterhelfen...?
würd einf gern den securestring versschlüsseln
LG
normalerweise sendet man das passwort über https an den server (also verschlüsselt, der server kann es aber entschlüsseln), hasht das passwort dann mit etwas salt und speichert bzw vergleicht dann mit dem hinterlegten hash + salt in der datenbank
ah, okay. das problem ist ich will es jetzt mal nur in eine lokale Datenbank speichern.
ich versuch zwar mit der antwort vom andern weiter zu kommen, den SecureString inhalt mit ProtectedData zu verschlüsseln aber ich tauche unter. :<
wie gesagt, passwörter will man auf keinen fall verschlüsselt in einer datenbank speichern. (weil sie, anders als ein hash mit salt wieder in das klartext passwort umgewandelt werden können, falls jemand zugriff auf datenbank und schlüssel erhält)
schick das passwort einfach im klartext (über https) an den server und der server hasht es mit salt
wenn du (noch) keinen server hast dann machst du das halt clientseitig und speicherst dann salt und hash in der datenbank aber niemals ein verschüsseltes passwort in einer datenbank speichern wenn es nicht sein muss (und in deinem fall muss es das nicht)
Bzw hab ich richtig verstanden dass man den SecureString verschlüsselt?. Btw entschlüsselung erfolgr im backend oder?😅:)