Hallo liebe Community,
dies ist mein erster Thread nach Jahren, also bitte seht es mir nach, wenn nicht alles perfekt beschrieben ist. Bin aber für Verbesserungen natürlich offen.
Kurze Beschreibung zur Geschichte
Ich programmiere als Hobby sehr gerne mit Java und bin gerade dabei, mir JavaFX und MySQL in Kombination anzuschauen. Ich habe viele Tutorials angesehen, in denen thematisiert wurde, wie genau man eine Verbindung zu einer Datenbank herstellt. In meinem Fall einer MySQL Datenbank. In diesen einfachen Beispielen wird immer der Benutzername und Passwort (als Klartext) eingegeben um sich mit der Datenbank zu verbinden (in einer kleinen Java-Applikation zur Demonstration).
Soweit ist mir alles klar und funktioniert auch alles super.
Nun zu meinem aktuell "Problem"
Mir stellt sich jedoch die Frage, wie genau ich das Password in oder durch meine Applikation speichern soll.
Denn
In meinem aktuell recht einfach gehaltenen Applikations-Prototypen kann man bisher sowohl den Typ der Datenbank, den Connection-String, als auch Benutzername und Password für die Datenbank hinterlegen. Diese speichere in aktuell in einer *.json Datei ab (nur als Beispiel). Das Password in dieser *.json Datei als Klartext abzuspeichern wäre natürlich nicht ideale Weg. Somit würde ich ihn gerne gehasht (oder welches Verfahren man dafür benutzt) abspeichern. Doch wie löse ich den Hash auf, wenn ich mich doch mit dem Klar-Password gegen die Datenbank authentifizieren muss. Denn ich verstehe es so, dass es unmöglich (zumindest beinahe) ist, einen Hash aufzulösen. Und würde ich ein kryptographischer Verfahren nehmen, müsste ich zumindest das verschlüsselte Password und den passenden Schlüssel abspeichern. Doch auch das scheint mir nicht der passende Weg zu sein. Deswegen hoffe ich auf euer Wissen und ggf. passende Vorschläge.
Sicherlich gibt es dafür einen guten Weg, dies in einer Applikation zu implementieren, aber mir fehlt zum einen der technische Background (Thema Sicherheit und Verschlüsselung) und zum anderen die Schlagwörter, mit denen ich google befragen und eventuell Antworten erhalten könnte
Ich hoffe, ihr versteht mein Problem. Ansonsten schreibt es mir gerne und ich versuche passendere Wort dafür zu finden.
Ich danke schon einmal jedem, der sich diesen wirren Text durchliest.
dies ist mein erster Thread nach Jahren, also bitte seht es mir nach, wenn nicht alles perfekt beschrieben ist. Bin aber für Verbesserungen natürlich offen.
Kurze Beschreibung zur Geschichte
Ich programmiere als Hobby sehr gerne mit Java und bin gerade dabei, mir JavaFX und MySQL in Kombination anzuschauen. Ich habe viele Tutorials angesehen, in denen thematisiert wurde, wie genau man eine Verbindung zu einer Datenbank herstellt. In meinem Fall einer MySQL Datenbank. In diesen einfachen Beispielen wird immer der Benutzername und Passwort (als Klartext) eingegeben um sich mit der Datenbank zu verbinden (in einer kleinen Java-Applikation zur Demonstration).
Soweit ist mir alles klar und funktioniert auch alles super.
Nun zu meinem aktuell "Problem"
Mir stellt sich jedoch die Frage, wie genau ich das Password in oder durch meine Applikation speichern soll.
Denn
In meinem aktuell recht einfach gehaltenen Applikations-Prototypen kann man bisher sowohl den Typ der Datenbank, den Connection-String, als auch Benutzername und Password für die Datenbank hinterlegen. Diese speichere in aktuell in einer *.json Datei ab (nur als Beispiel). Das Password in dieser *.json Datei als Klartext abzuspeichern wäre natürlich nicht ideale Weg. Somit würde ich ihn gerne gehasht (oder welches Verfahren man dafür benutzt) abspeichern. Doch wie löse ich den Hash auf, wenn ich mich doch mit dem Klar-Password gegen die Datenbank authentifizieren muss. Denn ich verstehe es so, dass es unmöglich (zumindest beinahe) ist, einen Hash aufzulösen. Und würde ich ein kryptographischer Verfahren nehmen, müsste ich zumindest das verschlüsselte Password und den passenden Schlüssel abspeichern. Doch auch das scheint mir nicht der passende Weg zu sein. Deswegen hoffe ich auf euer Wissen und ggf. passende Vorschläge.
Sicherlich gibt es dafür einen guten Weg, dies in einer Applikation zu implementieren, aber mir fehlt zum einen der technische Background (Thema Sicherheit und Verschlüsselung) und zum anderen die Schlagwörter, mit denen ich google befragen und eventuell Antworten erhalten könnte
Ich hoffe, ihr versteht mein Problem. Ansonsten schreibt es mir gerne und ich versuche passendere Wort dafür zu finden.
Ich danke schon einmal jedem, der sich diesen wirren Text durchliest.